From 03da8ce3bee24dc5c03cfd3f4f9a231e0942dbe8 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=9F=D0=B0=D1=83=D1=82=D0=BE=D0=B2=20=D0=9B=D0=B5=D0=BE?= =?UTF-8?q?=D0=BD=D0=B8=D0=B4?= Date: Mon, 31 Aug 2015 11:31:16 +0300 Subject: [PATCH 1/4] =?UTF-8?q?=D0=9F=D0=B5=D1=80=D0=B5=D0=B8=D0=BC=D0=B5?= =?UTF-8?q?=D0=BD=D0=BE=D0=B2=D0=B0=D0=BB=20=D0=BA=D0=BD=D0=BE=D0=BF=D0=BA?= =?UTF-8?q?=D1=83.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../form" | 32 +++++++++--------- .../module" | 2 +- .../und/versions" | 2 +- ...1\217\320\221\320\260\320\267\321\213.epf" | Bin 22297 -> 22246 bytes 4 files changed, 18 insertions(+), 18 deletions(-) diff --git "a/src/\320\241\320\276\320\267\320\264\320\260\320\275\320\270\320\265Fixtures\320\224\320\273\321\217\320\235\320\260\321\207\320\260\320\273\321\214\320\275\320\276\320\263\320\276\320\227\320\260\320\277\320\276\320\273\320\275\320\265\320\275\320\270\321\217\320\221\320\260\320\267\321\213/Form/\320\244\320\276\321\200\320\274\320\260/form" "b/src/\320\241\320\276\320\267\320\264\320\260\320\275\320\270\320\265Fixtures\320\224\320\273\321\217\320\235\320\260\321\207\320\260\320\273\321\214\320\275\320\276\320\263\320\276\320\227\320\260\320\277\320\276\320\273\320\275\320\265\320\275\320\270\321\217\320\221\320\260\320\267\321\213/Form/\320\244\320\276\321\200\320\274\320\260/form" index 671fbc4..87e8f42 100644 --- "a/src/\320\241\320\276\320\267\320\264\320\260\320\275\320\270\320\265Fixtures\320\224\320\273\321\217\320\235\320\260\321\207\320\260\320\273\321\214\320\275\320\276\320\263\320\276\320\227\320\260\320\277\320\276\320\273\320\275\320\265\320\275\320\270\321\217\320\221\320\260\320\267\321\213/Form/\320\244\320\276\321\200\320\274\320\260/form" +++ "b/src/\320\241\320\276\320\267\320\264\320\260\320\275\320\270\320\265Fixtures\320\224\320\273\321\217\320\235\320\260\321\207\320\260\320\273\321\214\320\275\320\276\320\263\320\276\320\227\320\260\320\277\320\276\320\273\320\275\320\265\320\275\320\270\321\217\320\221\320\260\320\267\321\213/Form/\320\244\320\276\321\200\320\274\320\260/form" @@ -166,14 +166,14 @@ {0},7,1,0,00000000-0000-0000-0000-000000000000}, {1,0},0,0},9,2,0,2,0,1, {5,38a2bd79-81a8-456d-981f-b55d6bfa5fa5,4,1,2, -{6,77f470c0-df97-4932-99fa-c1eb91f65dbb,1,fbe38877-b914-4fd5-8540-07dde06ba2e1, +{6,cbb44aa0-64a7-4c16-9d66-a6ca5e441ca2,1,fbe38877-b914-4fd5-8540-07dde06ba2e1, {6,2,00000000-0000-0000-0000-000000000000,142, {1,0,357c6a54-357d-425d-a2bd-22f4f6e86c87,2147483647,0},0,1},0}, -{6,1ac2e949-466a-428b-8eb3-dd3364ffc988,1,abde0c9a-18a6-4e0c-bbaa-af26b911b3e6, +{6,5c3bb5d5-77c1-4734-bf77-5841a545e2d4,1,abde0c9a-18a6-4e0c-bbaa-af26b911b3e6, {1,9d0a2e40-b978-11d4-84b6-008048da06df,0},0},1, -{5,b78f2e80-ec68-11d4-9dcf-0050bae2bc79,4,0,2,1ac2e949-466a-428b-8eb3-dd3364ffc988, +{5,b78f2e80-ec68-11d4-9dcf-0050bae2bc79,4,0,2,5c3bb5d5-77c1-4734-bf77-5841a545e2d4, {8,"Разделитель",0,1, -{1,0},0,38a2bd79-81a8-456d-981f-b55d6bfa5fa5,2,1e2,2,1,1,0,1,0,0},77f470c0-df97-4932-99fa-c1eb91f65dbb, +{1,0},0,38a2bd79-81a8-456d-981f-b55d6bfa5fa5,2,1e2,2,1,1,0,1,0,0},cbb44aa0-64a7-4c16-9d66-a6ca5e441ca2, {8,"ОсновныеДействияФормыЗакрыть",0,1, {1,1, {"ru","Закрыть"} @@ -244,23 +244,23 @@ {0},0,0,0,48312c09-257f-4b29-b280-284dd89efc1e}, {1,0},0,0},13, {1,1, -{"ru","Генерация данных для констант"} +{"ru","Генерация данных"} },1,1,0,0,0, {4,0, {0},"",-1,-1,1,0,""}, {0,0,0},0,0,0,0,0}, {1, {0,e1692cc2-605b-4535-84dd-28440238746c, -{3,"кнГенерацияДанныхДляКонстантНажатие", -{1,"кнГенерацияДанныхДляКонстантНажатие", +{3,"кнГенерацияДанных", +{1,"кнГенерацияДанных", {1,1, -{"ru","Кн генерация данных для констант нажатие"} +{"ru","Кн генерация данных"} }, {1,1, -{"ru","Кн генерация данных для констант нажатие"} +{"ru","Кн генерация данных"} }, {1,1, -{"ru","Кн генерация данных для констант нажатие"} +{"ru","Кн генерация данных"} }, {4,0, {0},"",-1,-1,1,0,""}, @@ -1178,7 +1178,7 @@ {-18},0,0,0}, {1,0},0,0},29,0,0,0,0,0,0,0,0,0,1,0,0,10,0,0,4,0, {"U"}, -{"U"},"",0,1,0,0,0,0, +{"U"},"",1,1,0,0,0,0, {4,0, {0},"",-1,-1,1,0,""}, {4,0, @@ -1332,7 +1332,7 @@ {-18},0,0,0}, {1,0},0,0},29,0,0,0,0,0,0,0,0,0,1,0,0,10,0,0,4,0, {"U"}, -{"U"},"",0,1,0,0,0,0, +{"U"},"",1,1,0,0,0,0, {4,0, {0},"",-1,-1,1,0,""}, {4,0, @@ -1407,7 +1407,7 @@ {3,0, {0},0,0,0,48312c09-257f-4b29-b280-284dd89efc1e}, {1,0},0,0},9,2,1,0,1,1, -{5,c3ed1a36-1a78-4de5-af21-f021e23c48fe,60,1,0,1, +{5,c3ed1a36-1a78-4de5-af21-f021e23c48fe,65,1,0,1, {5,b78f2e80-ec68-11d4-9dcf-0050bae2bc79,4,0,0, {0,0, {0} @@ -1701,7 +1701,7 @@ CYGcwWBPZwKqGvLSfenfygT8jsON3BLEihiIbw==},0} {-18},0,0,0}, {1,0},0,0},29,0,0,0,0,0,0,0,0,0,1,0,0,10,0,0,4,0, {"U"}, -{"U"},"",0,1,0,0,0,0, +{"U"},"",1,1,0,0,0,0, {4,0, {0},"",-1,-1,1,0,""}, {4,0, @@ -2120,7 +2120,7 @@ CYGcwWBPZwKqGvLSfenfygT8jsON3BLEihiIbw==},0} {3,0, {0},0,0,0,48312c09-257f-4b29-b280-284dd89efc1e}, {1,0},0,0},9,2,1,0,1,1, -{5,c3ed1a36-1a78-4de5-af21-f021e23c48fe,91,1,0,1, +{5,c3ed1a36-1a78-4de5-af21-f021e23c48fe,96,1,0,1, {5,b78f2e80-ec68-11d4-9dcf-0050bae2bc79,4,0,0, {0,0, {0} @@ -2377,7 +2377,7 @@ CYGcwWBPZwKqGvLSfenfygT8jsON3BLEihiIbw==},0} {0} } } -},619,419,1,0,1,4,4,719}, +},619,419,1,0,1,4,4,721}, { {1},25, {16, diff --git "a/src/\320\241\320\276\320\267\320\264\320\260\320\275\320\270\320\265Fixtures\320\224\320\273\321\217\320\235\320\260\321\207\320\260\320\273\321\214\320\275\320\276\320\263\320\276\320\227\320\260\320\277\320\276\320\273\320\275\320\265\320\275\320\270\321\217\320\221\320\260\320\267\321\213/Form/\320\244\320\276\321\200\320\274\320\260/module" "b/src/\320\241\320\276\320\267\320\264\320\260\320\275\320\270\320\265Fixtures\320\224\320\273\321\217\320\235\320\260\321\207\320\260\320\273\321\214\320\275\320\276\320\263\320\276\320\227\320\260\320\277\320\276\320\273\320\275\320\265\320\275\320\270\321\217\320\221\320\260\320\267\321\213/Form/\320\244\320\276\321\200\320\274\320\260/module" index 7df05bd..3db24c7 100644 --- "a/src/\320\241\320\276\320\267\320\264\320\260\320\275\320\270\320\265Fixtures\320\224\320\273\321\217\320\235\320\260\321\207\320\260\320\273\321\214\320\275\320\276\320\263\320\276\320\227\320\260\320\277\320\276\320\273\320\275\320\265\320\275\320\270\321\217\320\221\320\260\320\267\321\213/Form/\320\244\320\276\321\200\320\274\320\260/module" +++ "b/src/\320\241\320\276\320\267\320\264\320\260\320\275\320\270\320\265Fixtures\320\224\320\273\321\217\320\235\320\260\321\207\320\260\320\273\321\214\320\275\320\276\320\263\320\276\320\227\320\260\320\277\320\276\320\273\320\275\320\265\320\275\320\270\321\217\320\221\320\260\320\267\321\213/Form/\320\244\320\276\321\200\320\274\320\260/module" @@ -663,7 +663,7 @@ КонецЦикла; КонецПроцедуры -Процедура кнГенерацияДанныхДляКонстантНажатие(Элемент) +Процедура кнГенерацияДанных(Элемент) Сообщить("НАЧАЛО ОБРАБОТКИ " + ТекущаяДата()); ФайлМакета = Новый Файл(ПутьУПустомуПравильномуМакету); diff --git "a/src/\320\241\320\276\320\267\320\264\320\260\320\275\320\270\320\265Fixtures\320\224\320\273\321\217\320\235\320\260\321\207\320\260\320\273\321\214\320\275\320\276\320\263\320\276\320\227\320\260\320\277\320\276\320\273\320\275\320\265\320\275\320\270\321\217\320\221\320\260\320\267\321\213/und/versions" "b/src/\320\241\320\276\320\267\320\264\320\260\320\275\320\270\320\265Fixtures\320\224\320\273\321\217\320\235\320\260\321\207\320\260\320\273\321\214\320\275\320\276\320\263\320\276\320\227\320\260\320\277\320\276\320\273\320\275\320\265\320\275\320\270\321\217\320\221\320\260\320\267\321\213/und/versions" index 191e6c3..1714483 100644 --- "a/src/\320\241\320\276\320\267\320\264\320\260\320\275\320\270\320\265Fixtures\320\224\320\273\321\217\320\235\320\260\321\207\320\260\320\273\321\214\320\275\320\276\320\263\320\276\320\227\320\260\320\277\320\276\320\273\320\275\320\265\320\275\320\270\321\217\320\221\320\260\320\267\321\213/und/versions" +++ "b/src/\320\241\320\276\320\267\320\264\320\260\320\275\320\270\320\265Fixtures\320\224\320\273\321\217\320\235\320\260\321\207\320\260\320\273\321\214\320\275\320\276\320\263\320\276\320\227\320\260\320\277\320\276\320\273\320\275\320\265\320\275\320\270\321\217\320\221\320\260\320\267\321\213/und/versions" @@ -1 +1 @@ -{1,11,"",d26d6a4d-e2cb-40e7-8448-beeda04c56d5,"4757cf39-19aa-4067-8d10-1fedb568e7ad",7988311a-dc83-4d61-aaab-d2a088a6d671,"4757cf39-19aa-4067-8d10-1fedb568e7ad.0",406f3a19-5df9-4915-8266-c3e26ea72278,"99e5fc46-2b74-422a-8731-ff39e15eefbd",5e2279aa-4e76-467c-9f17-64238ce2abeb,"99e5fc46-2b74-422a-8731-ff39e15eefbd.0",3bb15e21-1a49-4558-8c9a-705216575f34,"af8543d6-5592-4827-a253-12a9ee4783b1",e21b5fe3-2e23-43b9-9e77-4079eaa914ac,"copyinfo",0cdc0d95-847b-4408-b6d7-424082619c28,"db29e233-6e54-4ee0-becb-d918aec28d42.0",09505828-c7c8-4a0a-8e9b-7acb77ef4aa1,"root",271844d7-4623-4146-8bbf-3cae9ac7320e,"version",8bbd5fe6-e682-4bf5-8207-8578497be136,"versions",67691443-0aee-46fc-a4cb-49a4a48ee2b4} \ No newline at end of file +{1,11,"",dea05bcb-1d43-4477-b29f-6b49cf988c15,"4757cf39-19aa-4067-8d10-1fedb568e7ad",2c6dc5bf-7c51-4ff6-b6bb-786cf510cba7,"4757cf39-19aa-4067-8d10-1fedb568e7ad.0",6cfcc6b0-4433-4d59-a574-16e5a4a5b87e,"99e5fc46-2b74-422a-8731-ff39e15eefbd",0bd29196-acb1-4ab8-baa2-3f74d760b8e0,"99e5fc46-2b74-422a-8731-ff39e15eefbd.0",f1180baf-a5b7-4092-b8e6-27f11884ae46,"af8543d6-5592-4827-a253-12a9ee4783b1",9180576a-6ffc-4da6-8e49-6b3dd94ca812,"copyinfo",77c22fef-ca11-482f-83da-4cdf31ad34d9,"db29e233-6e54-4ee0-becb-d918aec28d42.0",09505828-c7c8-4a0a-8e9b-7acb77ef4aa1,"root",6c7fb3e1-9e06-423a-9a34-1b0ceee68218,"version",25d754a0-385f-4f35-ad40-ef5cf6174dfc,"versions",f299025b-6c0e-4323-a9f1-5ee6239e9a47} \ No newline at end of file diff --git "a/\320\241\320\276\320\267\320\264\320\260\320\275\320\270\320\265Fixtures\320\224\320\273\321\217\320\235\320\260\321\207\320\260\320\273\321\214\320\275\320\276\320\263\320\276\320\227\320\260\320\277\320\276\320\273\320\275\320\265\320\275\320\270\321\217\320\221\320\260\320\267\321\213.epf" "b/\320\241\320\276\320\267\320\264\320\260\320\275\320\270\320\265Fixtures\320\224\320\273\321\217\320\235\320\260\321\207\320\260\320\273\321\214\320\275\320\276\320\263\320\276\320\227\320\260\320\277\320\276\320\273\320\275\320\265\320\275\320\270\321\217\320\221\320\260\320\267\321\213.epf" index 8c32b931aa001d7b37862189102cd24e76cdcb8a..32e31f8ffa5ac036b551c86316ebc195f558c70e 100644 GIT binary patch delta 15874 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 delta 15806 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 From c7f665f6e2be49796b34b9ee1110c69b3ac056aa Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=9F=D0=B0=D1=83=D1=82=D0=BE=D0=B2=20=D0=9B=D0=B5=D0=BE?= =?UTF-8?q?=D0=BD=D0=B8=D0=B4?= Date: Mon, 31 Aug 2015 12:22:21 +0300 Subject: [PATCH 2/4] =?UTF-8?q?=D0=A1=D0=B4=D0=B5=D0=BB=D0=B0=D0=BB=20?= =?UTF-8?q?=D1=80=D0=B5=D0=BA=D1=83=D1=80=D1=81=D0=B8=D0=B2=D0=BD=D0=BE?= =?UTF-8?q?=D0=B5=20=D1=81=D0=BE=D0=B7=D0=B4=D0=B0=D0=BD=D0=B8=D0=B5=20?= =?UTF-8?q?=D0=BE=D0=B1=D1=8A=D0=B5=D0=BA=D1=82=D0=BE=D0=B2,=20=D0=B5?= =?UTF-8?q?=D1=81=D0=BB=D0=B8=20=D0=B2=20=D1=85=D1=80=D0=B0=D0=BD=D0=B8?= =?UTF-8?q?=D0=BB=D0=B8=D1=89=D0=B5=20=D0=B7=D0=BD=D0=B0=D1=87=D0=B5=D0=BD?= =?UTF-8?q?=D0=B8=D1=8F=20=D0=BB=D0=B5=D0=B6=D0=B8=D1=82=20=D1=82=D0=B0?= =?UTF-8?q?=D0=B1=D0=BB=D0=B8=D1=86=D0=B0,=20=D0=B0=20=D0=B2=D0=BD=D1=83?= =?UTF-8?q?=D1=80=D0=B8=20=D1=82=D0=B0=D0=B1=D0=BB=D0=B8=D1=86=D1=8B=20?= =?UTF-8?q?=D1=81=D1=82=D1=80=D1=83=D0=BA=D1=82=D1=83=D1=80=D0=B0,=20?= =?UTF-8?q?=D0=B0=20=D0=B2=D0=BD=D1=83=D1=82=D1=80=D0=B8=20=D1=81=D1=82?= =?UTF-8?q?=D1=80=D1=83=D0=BA=D1=82=D1=80=D1=83=D1=80=D1=8B=20=D1=81=D0=BF?= =?UTF-8?q?=D0=B8=D1=81=D0=BE=D0=BA=20=D0=B8=20=D1=82.=D0=B4.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../form" | 2 +- .../module" | 97 +++++++++++++----- .../und/versions" | 2 +- ...1\217\320\221\320\260\320\267\321\213.epf" | Bin 22246 -> 22470 bytes 4 files changed, 76 insertions(+), 25 deletions(-) diff --git "a/src/\320\241\320\276\320\267\320\264\320\260\320\275\320\270\320\265Fixtures\320\224\320\273\321\217\320\235\320\260\321\207\320\260\320\273\321\214\320\275\320\276\320\263\320\276\320\227\320\260\320\277\320\276\320\273\320\275\320\265\320\275\320\270\321\217\320\221\320\260\320\267\321\213/Form/\320\244\320\276\321\200\320\274\320\260/form" "b/src/\320\241\320\276\320\267\320\264\320\260\320\275\320\270\320\265Fixtures\320\224\320\273\321\217\320\235\320\260\321\207\320\260\320\273\321\214\320\275\320\276\320\263\320\276\320\227\320\260\320\277\320\276\320\273\320\275\320\265\320\275\320\270\321\217\320\221\320\260\320\267\321\213/Form/\320\244\320\276\321\200\320\274\320\260/form" index 87e8f42..c8ec5a9 100644 --- "a/src/\320\241\320\276\320\267\320\264\320\260\320\275\320\270\320\265Fixtures\320\224\320\273\321\217\320\235\320\260\321\207\320\260\320\273\321\214\320\275\320\276\320\263\320\276\320\227\320\260\320\277\320\276\320\273\320\275\320\265\320\275\320\270\321\217\320\221\320\260\320\267\321\213/Form/\320\244\320\276\321\200\320\274\320\260/form" +++ "b/src/\320\241\320\276\320\267\320\264\320\260\320\275\320\270\320\265Fixtures\320\224\320\273\321\217\320\235\320\260\321\207\320\260\320\273\321\214\320\275\320\276\320\263\320\276\320\227\320\260\320\277\320\276\320\273\320\275\320\265\320\275\320\270\321\217\320\221\320\260\320\267\321\213/Form/\320\244\320\276\321\200\320\274\320\260/form" @@ -2377,7 +2377,7 @@ CYGcwWBPZwKqGvLSfenfygT8jsON3BLEihiIbw==},0} {0} } } -},619,419,1,0,1,4,4,721}, +},619,419,1,0,1,4,4,744}, { {1},25, {16, diff --git "a/src/\320\241\320\276\320\267\320\264\320\260\320\275\320\270\320\265Fixtures\320\224\320\273\321\217\320\235\320\260\321\207\320\260\320\273\321\214\320\275\320\276\320\263\320\276\320\227\320\260\320\277\320\276\320\273\320\275\320\265\320\275\320\270\321\217\320\221\320\260\320\267\321\213/Form/\320\244\320\276\321\200\320\274\320\260/module" "b/src/\320\241\320\276\320\267\320\264\320\260\320\275\320\270\320\265Fixtures\320\224\320\273\321\217\320\235\320\260\321\207\320\260\320\273\321\214\320\275\320\276\320\263\320\276\320\227\320\260\320\277\320\276\320\273\320\275\320\265\320\275\320\270\321\217\320\221\320\260\320\267\321\213/Form/\320\244\320\276\321\200\320\274\320\260/module" index 3db24c7..bc4ccdb 100644 --- "a/src/\320\241\320\276\320\267\320\264\320\260\320\275\320\270\320\265Fixtures\320\224\320\273\321\217\320\235\320\260\321\207\320\260\320\273\321\214\320\275\320\276\320\263\320\276\320\227\320\260\320\277\320\276\320\273\320\275\320\265\320\275\320\270\321\217\320\221\320\260\320\267\321\213/Form/\320\244\320\276\321\200\320\274\320\260/module" +++ "b/src/\320\241\320\276\320\267\320\264\320\260\320\275\320\270\320\265Fixtures\320\224\320\273\321\217\320\235\320\260\321\207\320\260\320\273\321\214\320\275\320\276\320\263\320\276\320\227\320\260\320\277\320\276\320\273\320\275\320\265\320\275\320\270\321\217\320\221\320\260\320\267\321\213/Form/\320\244\320\276\321\200\320\274\320\260/module" @@ -1,4 +1,6 @@ - +Перем СчетчикОбъектов; + + Процедура КнопкаВыполнитьНажатие(Кнопка) // Вставить содержимое обработчика. КонецПроцедуры @@ -15,19 +17,22 @@ Возврат Массив; КонецФункции -Функция ПолучитьСтрокуДляСтруктуры(Структура,ТаблицаСправочниковДляПолученияМакетовFixtures,ТаблицаКода) +Функция ПолучитьСтрокуДляСтруктуры(Структура,ТаблицаСправочниковДляПолученияМакетовFixtures,ТаблицаКода,ВернутьИмяПеременной = Ложь) //Сообщить(" "); //Сообщить("ОбъектДляХранилищаЗначения = Новый Структура;"); + СчетчикОбъектов = СчетчикОбъектов + 1; + ИмяПеременной = "Структура" + СчетчикОбъектов; + ДобавитьСтрокуКода(ТаблицаКода," "); - ДобавитьСтрокуКода(ТаблицаКода,"ОбъектДляХранилищаЗначения = Новый Структура;"); + ДобавитьСтрокуКода(ТаблицаКода,ИмяПеременной + " = Новый Структура;"); Для каждого Элем Из Структура Цикл Ключ = Элем.Ключ; Значение = Элем.Значение; Если Значение = Неопределено Тогда //Сообщить("ОбъектДляХранилищаЗначения.Вставить(""" + Ключ + """,Неопределено);"); - ДобавитьСтрокуКода(ТаблицаКода,"ОбъектДляХранилищаЗначения.Вставить(""" + Ключ + """,Неопределено);"); + ДобавитьСтрокуКода(ТаблицаКода,ИмяПеременной + ".Вставить(""" + Ключ + """,Неопределено);"); Продолжить; КонецЕсли; @@ -36,18 +41,27 @@ СтрокаЗначения = "Неопределено"; КонецЕсли; //Сообщить("ОбъектДляХранилищаЗначения.Вставить(""" + Ключ + """," + СтрокаЗначения + ");"); - ДобавитьСтрокуКода(ТаблицаКода,"ОбъектДляХранилищаЗначения.Вставить(""" + Ключ + """," + СтрокаЗначения + ");"); + ДобавитьСтрокуКода(ТаблицаКода,ИмяПеременной + ".Вставить(""" + Ключ + """," + СтрокаЗначения + ");"); КонецЦикла; - ДобавитьСтрокуКода(ТаблицаКода,"ХранилищеЗначения = Новый ХранилищеЗначения(ОбъектДляХранилищаЗначения);"); + + Если ВернутьИмяПеременной Тогда + Возврат ИмяПеременной; + Иначе + ДобавитьСтрокуКода(ТаблицаКода,"ХранилищеЗначения = Новый ХранилищеЗначения(" + ИмяПеременной + ");"); + КонецЕсли; + Возврат "//Была создана структура"; КонецФункции -Функция ПолучитьСтрокуДляСоответствия(Соответствие,ТаблицаСправочниковДляПолученияМакетовFixtures,ТаблицаКода) +Функция ПолучитьСтрокуДляСоответствия(Соответствие,ТаблицаСправочниковДляПолученияМакетовFixtures,ТаблицаКода,ВернутьИмяПеременной = Ложь) //Сообщить(" "); //Сообщить("ОбъектДляХранилищаЗначения = Новый Структура;"); + СчетчикОбъектов = СчетчикОбъектов + 1; + ИмяПеременной = "Соответствие" + СчетчикОбъектов; + ДобавитьСтрокуКода(ТаблицаКода," "); - ДобавитьСтрокуКода(ТаблицаКода,"ОбъектДляХранилищаЗначения = Новый Соответствие;"); + ДобавитьСтрокуКода(ТаблицаКода,ИмяПеременной + " = Новый Соответствие;"); Для каждого Элем Из Соответствие Цикл Ключ = Элем.Ключ; @@ -59,18 +73,27 @@ СтрокаЗначения = "Неопределено"; КонецЕсли; //Сообщить("ОбъектДляХранилищаЗначения.Вставить(""" + Ключ + """," + СтрокаЗначения + ");"); - ДобавитьСтрокуКода(ТаблицаКода,"ОбъектДляХранилищаЗначения.Вставить(" + СтрокаКлюч + "," + СтрокаЗначения + ");"); + ДобавитьСтрокуКода(ТаблицаКода,ИмяПеременной + ".Вставить(" + СтрокаКлюч + "," + СтрокаЗначения + ");"); КонецЦикла; - ДобавитьСтрокуКода(ТаблицаКода,"ХранилищеЗначения = Новый ХранилищеЗначения(ОбъектДляХранилищаЗначения);"); + + Если ВернутьИмяПеременной Тогда + Возврат ИмяПеременной; + Иначе + ДобавитьСтрокуКода(ТаблицаКода,"ХранилищеЗначения = Новый ХранилищеЗначения(" + ИмяПеременной + ");"); + КонецЕсли; + Возврат "//Была создана структура"; КонецФункции -Функция ПолучитьСтрокуДляСпискаЗначений(Спс,ТаблицаСправочниковДляПолученияМакетовFixtures,ТаблицаКода) +Функция ПолучитьСтрокуДляСпискаЗначений(Спс,ТаблицаСправочниковДляПолученияМакетовFixtures,ТаблицаКода,ВернутьИмяПеременной = Ложь) //Сообщить(" "); //Сообщить("ОбъектДляХранилищаЗначения = Новый Структура;"); + СчетчикОбъектов = СчетчикОбъектов + 1; + ИмяПеременной = "СписокЗначений" + СчетчикОбъектов; + ДобавитьСтрокуКода(ТаблицаКода," "); - ДобавитьСтрокуКода(ТаблицаКода,"ОбъектДляХранилищаЗначения = Новый СписокЗначений;"); + ДобавитьСтрокуКода(ТаблицаКода,ИмяПеременной + " = Новый СписокЗначений;"); //Спс = Новый СписокЗначений; //Спс.Добавить(Справочники.Номенклатура.НайтиПоКоду("00000001728"),"Товар"); @@ -79,7 +102,7 @@ Представление = Элем.Представление; Если Значение = Неопределено Тогда //Сообщить("ОбъектДляХранилищаЗначения.Вставить(""" + Ключ + """,Неопределено);"); - ДобавитьСтрокуКода(ТаблицаКода,"ОбъектДляХранилищаЗначения.Добавить(Неопределено,""" + Представление + """);"); + ДобавитьСтрокуКода(ТаблицаКода,ИмяПеременной + ".Добавить(Неопределено,""" + Представление + """);"); Продолжить; КонецЕсли; @@ -88,50 +111,67 @@ СтрокаЗначения = "Неопределено"; КонецЕсли; Если ЗначениеЗаполнено(Представление) Тогда - ДобавитьСтрокуКода(ТаблицаКода,"ОбъектДляХранилищаЗначения.Добавить(" + СтрокаЗначения + ",""" + Представление + """);"); + ДобавитьСтрокуКода(ТаблицаКода,ИмяПеременной + ".Добавить(" + СтрокаЗначения + ",""" + Представление + """);"); Иначе - ДобавитьСтрокуКода(ТаблицаКода,"ОбъектДляХранилищаЗначения.Добавить(" + СтрокаЗначения + ");"); + ДобавитьСтрокуКода(ТаблицаКода,ИмяПеременной + ".Добавить(" + СтрокаЗначения + ");"); КонецЕсли; КонецЦикла; - ДобавитьСтрокуКода(ТаблицаКода,"ХранилищеЗначения = Новый ХранилищеЗначения(ОбъектДляХранилищаЗначения);"); + + Если ВернутьИмяПеременной Тогда + Возврат ИмяПеременной; + Иначе + ДобавитьСтрокуКода(ТаблицаКода,"ХранилищеЗначения = Новый ХранилищеЗначения(" + ИмяПеременной + ");"); + КонецЕсли; Возврат "//Была создана структура"; КонецФункции -Функция ПолучитьСтрокуДляТаблицыЗначений(Тзн,ТаблицаСправочниковДляПолученияМакетовFixtures,ТаблицаКода) +Функция ПолучитьСтрокуДляТаблицыЗначений(Тзн,ТаблицаСправочниковДляПолученияМакетовFixtures,ТаблицаКода,ВернутьИмяПеременной = Ложь) //Сообщить(" "); //Сообщить("ОбъектДляХранилищаЗначения = Новый Структура;"); + СчетчикОбъектов = СчетчикОбъектов + 1; + ЗначениеСчетчика = СчетчикОбъектов; + ИмяПеременной = "ТаблицаЗначений" + СчетчикОбъектов; + ДобавитьСтрокуКода(ТаблицаКода," "); - ДобавитьСтрокуКода(ТаблицаКода,"ОбъектДляХранилищаЗначения = Новый ТаблицаЗначений;"); + ДобавитьСтрокуКода(ТаблицаКода,ИмяПеременной + " = Новый ТаблицаЗначений;"); //Спс = Новый СписокЗначений; //Спс.Добавить(Справочники.Номенклатура.НайтиПоКоду("00000001728"),"Товар"); Для каждого Колонка Из Тзн.Колонки Цикл - ДобавитьСтрокуКода(ТаблицаКода,"ОбъектДляХранилищаЗначения.Колонки.Добавить(""" + Колонка.Имя + """);"); + ДобавитьСтрокуКода(ТаблицаКода,ИмяПеременной + ".Колонки.Добавить(""" + Колонка.Имя + """);"); КонецЦикла; Ном = 0; Для каждого СтрокаТаблицы Из Тзн Цикл Ном = Ном + 1; ДобавитьСтрокуКода(ТаблицаКода,"//Строка №" + Ном); - ДобавитьСтрокуКода(ТаблицаКода,"СтрокаТаблицы = ОбъектДляХранилищаЗначения.Добавить();"); + ИдСтрокиТаблицы = "СтрокаТаблицы_" + ЗначениеСчетчика; + ДобавитьСтрокуКода(ТаблицаКода,ИдСтрокиТаблицы + " = " + ИмяПеременной + ".Добавить();"); Для каждого Колонка Из Тзн.Колонки Цикл ЗначениеИзТаблицы = СтрокаТаблицы[Колонка.Имя]; Если ЗначениеИзТаблицы = Неопределено Тогда //Сообщить("ОбъектДляХранилищаЗначения.Вставить(""" + Ключ + """,Неопределено);"); - ДобавитьСтрокуКода(ТаблицаКода,"СтрокаТаблицы." + Колонка.Имя + "=" + "Неопределено" + ";"); + ДобавитьСтрокуКода(ТаблицаКода,ИдСтрокиТаблицы + "." + Колонка.Имя + "=" + "Неопределено" + ";"); Продолжить; КонецЕсли; + СтрокаЗначения = ПолучитьСтрокуДляЗначения(ЗначениеИзТаблицы,"",ТаблицаСправочниковДляПолученияМакетовFixtures,ТаблицаКода); Если СтрокаЗначения = Неопределено Тогда СтрокаЗначения = "Неопределено"; КонецЕсли; - ДобавитьСтрокуКода(ТаблицаКода,"СтрокаТаблицы." + Колонка.Имя + "=" + СтрокаЗначения + ";"); + ДобавитьСтрокуКода(ТаблицаКода,ИдСтрокиТаблицы + "." + Колонка.Имя + "=" + СтрокаЗначения + ";"); КонецЦикла; КонецЦикла; - ДобавитьСтрокуКода(ТаблицаКода,"ХранилищеЗначения = Новый ХранилищеЗначения(ОбъектДляХранилищаЗначения);"); + + Если ВернутьИмяПеременной Тогда + Возврат ИмяПеременной; + Иначе + ДобавитьСтрокуКода(ТаблицаКода,"ХранилищеЗначения = Новый ХранилищеЗначения(" + ИмяПеременной + ");"); + КонецЕсли; + Возврат "//Была создана структура"; КонецФункции @@ -278,6 +318,16 @@ ДобавитьСтрокуКода(ТаблицаКода,"//Здесь надо заполнить константу " + ИмяКонстанты + " в которой хранилище значения. ТипЗначенияИзХранилища="+ТипЗначенияИзХранилища); КонецЕсли; Возврат Неопределено; + + + ИначеЕсли ТипЗначения = Тип("Структура") Тогда + Возврат ПолучитьСтрокуДляСтруктуры(Значение,ТаблицаСправочников,ТаблицаКода,Истина); + ИначеЕсли ТипЗначения = Тип("СписокЗначений") Тогда + Возврат ПолучитьСтрокуДляСпискаЗначений(Значение,ТаблицаСправочников,ТаблицаКода,Истина); + ИначеЕсли ТипЗначения = Тип("Соответствие") Тогда + Возврат ПолучитьСтрокуДляСоответствия(Значение,ТаблицаСправочников,ТаблицаКода,Истина); + ИначеЕсли ТипЗначения = Тип("ТаблицаЗначений") Тогда + Возврат ПолучитьСтрокуДляТаблицыЗначений(Значение,ТаблицаСправочников,ТаблицаКода,Истина); Иначе //Сообщить("//Здесь надо установить значение для константы """ + Имя + """. ТипЗначения="+ТипЗначения); Если ИмяКонстанты = "" Тогда //значит это подчиненное значение, которое имеет сложный тип, например в таблце значений внутри были структуры @@ -665,6 +715,7 @@ Процедура кнГенерацияДанных(Элемент) Сообщить("НАЧАЛО ОБРАБОТКИ " + ТекущаяДата()); + СчетчикОбъектов = 0; ФайлМакета = Новый Файл(ПутьУПустомуПравильномуМакету); Если Не ФайлМакета.Существует() Тогда diff --git "a/src/\320\241\320\276\320\267\320\264\320\260\320\275\320\270\320\265Fixtures\320\224\320\273\321\217\320\235\320\260\321\207\320\260\320\273\321\214\320\275\320\276\320\263\320\276\320\227\320\260\320\277\320\276\320\273\320\275\320\265\320\275\320\270\321\217\320\221\320\260\320\267\321\213/und/versions" "b/src/\320\241\320\276\320\267\320\264\320\260\320\275\320\270\320\265Fixtures\320\224\320\273\321\217\320\235\320\260\321\207\320\260\320\273\321\214\320\275\320\276\320\263\320\276\320\227\320\260\320\277\320\276\320\273\320\275\320\265\320\275\320\270\321\217\320\221\320\260\320\267\321\213/und/versions" index 1714483..adcbef4 100644 --- "a/src/\320\241\320\276\320\267\320\264\320\260\320\275\320\270\320\265Fixtures\320\224\320\273\321\217\320\235\320\260\321\207\320\260\320\273\321\214\320\275\320\276\320\263\320\276\320\227\320\260\320\277\320\276\320\273\320\275\320\265\320\275\320\270\321\217\320\221\320\260\320\267\321\213/und/versions" +++ "b/src/\320\241\320\276\320\267\320\264\320\260\320\275\320\270\320\265Fixtures\320\224\320\273\321\217\320\235\320\260\321\207\320\260\320\273\321\214\320\275\320\276\320\263\320\276\320\227\320\260\320\277\320\276\320\273\320\275\320\265\320\275\320\270\321\217\320\221\320\260\320\267\321\213/und/versions" @@ -1 +1 @@ -{1,11,"",dea05bcb-1d43-4477-b29f-6b49cf988c15,"4757cf39-19aa-4067-8d10-1fedb568e7ad",2c6dc5bf-7c51-4ff6-b6bb-786cf510cba7,"4757cf39-19aa-4067-8d10-1fedb568e7ad.0",6cfcc6b0-4433-4d59-a574-16e5a4a5b87e,"99e5fc46-2b74-422a-8731-ff39e15eefbd",0bd29196-acb1-4ab8-baa2-3f74d760b8e0,"99e5fc46-2b74-422a-8731-ff39e15eefbd.0",f1180baf-a5b7-4092-b8e6-27f11884ae46,"af8543d6-5592-4827-a253-12a9ee4783b1",9180576a-6ffc-4da6-8e49-6b3dd94ca812,"copyinfo",77c22fef-ca11-482f-83da-4cdf31ad34d9,"db29e233-6e54-4ee0-becb-d918aec28d42.0",09505828-c7c8-4a0a-8e9b-7acb77ef4aa1,"root",6c7fb3e1-9e06-423a-9a34-1b0ceee68218,"version",25d754a0-385f-4f35-ad40-ef5cf6174dfc,"versions",f299025b-6c0e-4323-a9f1-5ee6239e9a47} \ No newline at end of file +{1,11,"",27d729c3-9b74-4af4-9526-9a06db2a2abe,"4757cf39-19aa-4067-8d10-1fedb568e7ad",2c6dc5bf-7c51-4ff6-b6bb-786cf510cba7,"4757cf39-19aa-4067-8d10-1fedb568e7ad.0",6cfcc6b0-4433-4d59-a574-16e5a4a5b87e,"99e5fc46-2b74-422a-8731-ff39e15eefbd",5bc1bbcf-d185-4224-8d3c-031233ba3300,"99e5fc46-2b74-422a-8731-ff39e15eefbd.0",901c6171-1a53-4792-b821-77962eab7816,"af8543d6-5592-4827-a253-12a9ee4783b1",9180576a-6ffc-4da6-8e49-6b3dd94ca812,"copyinfo",00827658-b936-4d41-8033-50b122cfe31e,"db29e233-6e54-4ee0-becb-d918aec28d42.0",09505828-c7c8-4a0a-8e9b-7acb77ef4aa1,"root",7accf1a5-e840-455d-a442-b1449ac0ecab,"version",511f4d92-edb3-4f9f-8976-2bbc826f0bf7,"versions",bd5620fa-5088-4cb0-88f6-3f1a90b93394} \ No newline at end of file diff --git "a/\320\241\320\276\320\267\320\264\320\260\320\275\320\270\320\265Fixtures\320\224\320\273\321\217\320\235\320\260\321\207\320\260\320\273\321\214\320\275\320\276\320\263\320\276\320\227\320\260\320\277\320\276\320\273\320\275\320\265\320\275\320\270\321\217\320\221\320\260\320\267\321\213.epf" "b/\320\241\320\276\320\267\320\264\320\260\320\275\320\270\320\265Fixtures\320\224\320\273\321\217\320\235\320\260\321\207\320\260\320\273\321\214\320\275\320\276\320\263\320\276\320\227\320\260\320\277\320\276\320\273\320\275\320\265\320\275\320\270\321\217\320\221\320\260\320\267\321\213.epf" index 32e31f8ffa5ac036b551c86316ebc195f558c70e..754935c2ce9fb5b1bfde920d9db4a9b3bcb6948e 100644 GIT binary patch delta 16014 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 OZyq{ZGe~G~{C@ywpFkV{ delta 15711 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 E51 Date: Mon, 31 Aug 2015 15:28:17 +0300 Subject: [PATCH 3/4] =?UTF-8?q?=D0=9E=D0=B1=D0=BD=D0=BE=D0=B2=D0=B8=D0=BB?= =?UTF-8?q?=20=D0=B2=D0=B5=D1=80=D1=81=D0=B8=D1=8E=20=D0=BD=D0=B0=201.01.?= =?UTF-8?q?=20=D0=A3=D0=B1=D1=80=D0=B0=D0=BB=20=D0=BF=D1=80=D0=B5=D0=B4?= =?UTF-8?q?=D0=BE=D0=BF=D1=80=D0=B5=D0=B4=D0=B5=D0=BB=D0=B5=D0=BD=D0=BD?= =?UTF-8?q?=D1=8B=D0=B5=20=D1=8D=D0=BB=D0=B5=D0=BC=D0=B5=D0=BD=D1=82=D1=8B?= =?UTF-8?q?=20=D0=B8=D0=B7=20=D0=B2=D1=8B=D0=B3=D1=80=D1=83=D0=B7=D0=BA?= =?UTF-8?q?=D0=B8=20=D1=81=D0=BF=D1=80=D0=B0=D0=B2=D0=BE=D1=87=D0=BD=D0=B8?= =?UTF-8?q?=D0=BA=D0=BE=D0=B2.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../form" | 18 +++++++++--------- .../module" | 2 +- .../ObjectModule.txt" | 2 +- .../und/versions" | 2 +- ...1\217\320\221\320\260\320\267\321\213.epf" | Bin 22470 -> 22551 bytes 5 files changed, 12 insertions(+), 12 deletions(-) diff --git "a/src/\320\241\320\276\320\267\320\264\320\260\320\275\320\270\320\265Fixtures\320\224\320\273\321\217\320\235\320\260\321\207\320\260\320\273\321\214\320\275\320\276\320\263\320\276\320\227\320\260\320\277\320\276\320\273\320\275\320\265\320\275\320\270\321\217\320\221\320\260\320\267\321\213/Form/\320\244\320\276\321\200\320\274\320\260/form" "b/src/\320\241\320\276\320\267\320\264\320\260\320\275\320\270\320\265Fixtures\320\224\320\273\321\217\320\235\320\260\321\207\320\260\320\273\321\214\320\275\320\276\320\263\320\276\320\227\320\260\320\277\320\276\320\273\320\275\320\265\320\275\320\270\321\217\320\221\320\260\320\267\321\213/Form/\320\244\320\276\321\200\320\274\320\260/form" index c8ec5a9..06b8c44 100644 --- "a/src/\320\241\320\276\320\267\320\264\320\260\320\275\320\270\320\265Fixtures\320\224\320\273\321\217\320\235\320\260\321\207\320\260\320\273\321\214\320\275\320\276\320\263\320\276\320\227\320\260\320\277\320\276\320\273\320\275\320\265\320\275\320\270\321\217\320\221\320\260\320\267\321\213/Form/\320\244\320\276\321\200\320\274\320\260/form" +++ "b/src/\320\241\320\276\320\267\320\264\320\260\320\275\320\270\320\265Fixtures\320\224\320\273\321\217\320\235\320\260\321\207\320\260\320\273\321\214\320\275\320\276\320\263\320\276\320\227\320\260\320\277\320\276\320\273\320\275\320\265\320\275\320\270\321\217\320\221\320\260\320\267\321\213/Form/\320\244\320\276\321\200\320\274\320\260/form" @@ -166,14 +166,14 @@ {0},7,1,0,00000000-0000-0000-0000-000000000000}, {1,0},0,0},9,2,0,2,0,1, {5,38a2bd79-81a8-456d-981f-b55d6bfa5fa5,4,1,2, -{6,cbb44aa0-64a7-4c16-9d66-a6ca5e441ca2,1,fbe38877-b914-4fd5-8540-07dde06ba2e1, +{6,1d5badd3-1b14-40ef-8548-6dec8ff1e0e9,1,abde0c9a-18a6-4e0c-bbaa-af26b911b3e6, +{1,9d0a2e40-b978-11d4-84b6-008048da06df,0},0}, +{6,c67459dd-c02b-46ae-afee-c84632256cf0,1,fbe38877-b914-4fd5-8540-07dde06ba2e1, {6,2,00000000-0000-0000-0000-000000000000,142, -{1,0,357c6a54-357d-425d-a2bd-22f4f6e86c87,2147483647,0},0,1},0}, -{6,5c3bb5d5-77c1-4734-bf77-5841a545e2d4,1,abde0c9a-18a6-4e0c-bbaa-af26b911b3e6, -{1,9d0a2e40-b978-11d4-84b6-008048da06df,0},0},1, -{5,b78f2e80-ec68-11d4-9dcf-0050bae2bc79,4,0,2,5c3bb5d5-77c1-4734-bf77-5841a545e2d4, +{1,0,357c6a54-357d-425d-a2bd-22f4f6e86c87,2147483647,0},0,1},0},1, +{5,b78f2e80-ec68-11d4-9dcf-0050bae2bc79,4,0,2,1d5badd3-1b14-40ef-8548-6dec8ff1e0e9, {8,"Разделитель",0,1, -{1,0},0,38a2bd79-81a8-456d-981f-b55d6bfa5fa5,2,1e2,2,1,1,0,1,0,0},cbb44aa0-64a7-4c16-9d66-a6ca5e441ca2, +{1,0},0,38a2bd79-81a8-456d-981f-b55d6bfa5fa5,2,1e2,2,1,1,0,1,0,0},c67459dd-c02b-46ae-afee-c84632256cf0, {8,"ОсновныеДействияФормыЗакрыть",0,1, {1,1, {"ru","Закрыть"} @@ -1407,7 +1407,7 @@ {3,0, {0},0,0,0,48312c09-257f-4b29-b280-284dd89efc1e}, {1,0},0,0},9,2,1,0,1,1, -{5,c3ed1a36-1a78-4de5-af21-f021e23c48fe,65,1,0,1, +{5,c3ed1a36-1a78-4de5-af21-f021e23c48fe,70,1,0,1, {5,b78f2e80-ec68-11d4-9dcf-0050bae2bc79,4,0,0, {0,0, {0} @@ -2120,7 +2120,7 @@ CYGcwWBPZwKqGvLSfenfygT8jsON3BLEihiIbw==},0} {3,0, {0},0,0,0,48312c09-257f-4b29-b280-284dd89efc1e}, {1,0},0,0},9,2,1,0,1,1, -{5,c3ed1a36-1a78-4de5-af21-f021e23c48fe,96,1,0,1, +{5,c3ed1a36-1a78-4de5-af21-f021e23c48fe,101,1,0,1, {5,b78f2e80-ec68-11d4-9dcf-0050bae2bc79,4,0,0, {0,0, {0} @@ -2377,7 +2377,7 @@ CYGcwWBPZwKqGvLSfenfygT8jsON3BLEihiIbw==},0} {0} } } -},619,419,1,0,1,4,4,744}, +},619,419,1,0,1,4,4,748}, { {1},25, {16, diff --git "a/src/\320\241\320\276\320\267\320\264\320\260\320\275\320\270\320\265Fixtures\320\224\320\273\321\217\320\235\320\260\321\207\320\260\320\273\321\214\320\275\320\276\320\263\320\276\320\227\320\260\320\277\320\276\320\273\320\275\320\265\320\275\320\270\321\217\320\221\320\260\320\267\321\213/Form/\320\244\320\276\321\200\320\274\320\260/module" "b/src/\320\241\320\276\320\267\320\264\320\260\320\275\320\270\320\265Fixtures\320\224\320\273\321\217\320\235\320\260\321\207\320\260\320\273\321\214\320\275\320\276\320\263\320\276\320\227\320\260\320\277\320\276\320\273\320\275\320\265\320\275\320\270\321\217\320\221\320\260\320\267\321\213/Form/\320\244\320\276\321\200\320\274\320\260/module" index bc4ccdb..14bc8e6 100644 --- "a/src/\320\241\320\276\320\267\320\264\320\260\320\275\320\270\320\265Fixtures\320\224\320\273\321\217\320\235\320\260\321\207\320\260\320\273\321\214\320\275\320\276\320\263\320\276\320\227\320\260\320\277\320\276\320\273\320\275\320\265\320\275\320\270\321\217\320\221\320\260\320\267\321\213/Form/\320\244\320\276\321\200\320\274\320\260/module" +++ "b/src/\320\241\320\276\320\267\320\264\320\260\320\275\320\270\320\265Fixtures\320\224\320\273\321\217\320\235\320\260\321\207\320\260\320\273\321\214\320\275\320\276\320\263\320\276\320\227\320\260\320\277\320\276\320\273\320\275\320\265\320\275\320\270\321\217\320\221\320\260\320\267\321\213/Form/\320\244\320\276\321\200\320\274\320\260/module" @@ -522,7 +522,7 @@ | __ИмяСпр__.Ссылка КАК Ссылка |ИЗ | Справочник.__ИмяСпр__ КАК __ИмяСпр__ - | ГДЕ НЕ ПометкаУдаления + | ГДЕ НЕ ПометкаУдаления И НЕ Предопределенный |"; Запрос.Текст = СтрЗаменить(Запрос.Текст,"__ИмяСпр__",ИмяСпр); diff --git "a/src/\320\241\320\276\320\267\320\264\320\260\320\275\320\270\320\265Fixtures\320\224\320\273\321\217\320\235\320\260\321\207\320\260\320\273\321\214\320\275\320\276\320\263\320\276\320\227\320\260\320\277\320\276\320\273\320\275\320\265\320\275\320\270\321\217\320\221\320\260\320\267\321\213/ObjectModule.txt" "b/src/\320\241\320\276\320\267\320\264\320\260\320\275\320\270\320\265Fixtures\320\224\320\273\321\217\320\235\320\260\321\207\320\260\320\273\321\214\320\275\320\276\320\263\320\276\320\227\320\260\320\277\320\276\320\273\320\275\320\265\320\275\320\270\321\217\320\221\320\260\320\267\321\213/ObjectModule.txt" index 095caca..7c92f12 100644 --- "a/src/\320\241\320\276\320\267\320\264\320\260\320\275\320\270\320\265Fixtures\320\224\320\273\321\217\320\235\320\260\321\207\320\260\320\273\321\214\320\275\320\276\320\263\320\276\320\227\320\260\320\277\320\276\320\273\320\275\320\265\320\275\320\270\321\217\320\221\320\260\320\267\321\213/ObjectModule.txt" +++ "b/src/\320\241\320\276\320\267\320\264\320\260\320\275\320\270\320\265Fixtures\320\224\320\273\321\217\320\235\320\260\321\207\320\260\320\273\321\214\320\275\320\276\320\263\320\276\320\227\320\260\320\277\320\276\320\273\320\275\320\265\320\275\320\270\321\217\320\221\320\260\320\267\321\213/ObjectModule.txt" @@ -1,3 +1,3 @@ Функция ПолучитьВерсиюОбработки() Экспорт - Возврат "ver 1.0"; + Возврат "ver 1.01"; КонецФункции \ No newline at end of file diff --git "a/src/\320\241\320\276\320\267\320\264\320\260\320\275\320\270\320\265Fixtures\320\224\320\273\321\217\320\235\320\260\321\207\320\260\320\273\321\214\320\275\320\276\320\263\320\276\320\227\320\260\320\277\320\276\320\273\320\275\320\265\320\275\320\270\321\217\320\221\320\260\320\267\321\213/und/versions" "b/src/\320\241\320\276\320\267\320\264\320\260\320\275\320\270\320\265Fixtures\320\224\320\273\321\217\320\235\320\260\321\207\320\260\320\273\321\214\320\275\320\276\320\263\320\276\320\227\320\260\320\277\320\276\320\273\320\275\320\265\320\275\320\270\321\217\320\221\320\260\320\267\321\213/und/versions" index adcbef4..3d7963d 100644 --- "a/src/\320\241\320\276\320\267\320\264\320\260\320\275\320\270\320\265Fixtures\320\224\320\273\321\217\320\235\320\260\321\207\320\260\320\273\321\214\320\275\320\276\320\263\320\276\320\227\320\260\320\277\320\276\320\273\320\275\320\265\320\275\320\270\321\217\320\221\320\260\320\267\321\213/und/versions" +++ "b/src/\320\241\320\276\320\267\320\264\320\260\320\275\320\270\320\265Fixtures\320\224\320\273\321\217\320\235\320\260\321\207\320\260\320\273\321\214\320\275\320\276\320\263\320\276\320\227\320\260\320\277\320\276\320\273\320\275\320\265\320\275\320\270\321\217\320\221\320\260\320\267\321\213/und/versions" @@ -1 +1 @@ -{1,11,"",27d729c3-9b74-4af4-9526-9a06db2a2abe,"4757cf39-19aa-4067-8d10-1fedb568e7ad",2c6dc5bf-7c51-4ff6-b6bb-786cf510cba7,"4757cf39-19aa-4067-8d10-1fedb568e7ad.0",6cfcc6b0-4433-4d59-a574-16e5a4a5b87e,"99e5fc46-2b74-422a-8731-ff39e15eefbd",5bc1bbcf-d185-4224-8d3c-031233ba3300,"99e5fc46-2b74-422a-8731-ff39e15eefbd.0",901c6171-1a53-4792-b821-77962eab7816,"af8543d6-5592-4827-a253-12a9ee4783b1",9180576a-6ffc-4da6-8e49-6b3dd94ca812,"copyinfo",00827658-b936-4d41-8033-50b122cfe31e,"db29e233-6e54-4ee0-becb-d918aec28d42.0",09505828-c7c8-4a0a-8e9b-7acb77ef4aa1,"root",7accf1a5-e840-455d-a442-b1449ac0ecab,"version",511f4d92-edb3-4f9f-8976-2bbc826f0bf7,"versions",bd5620fa-5088-4cb0-88f6-3f1a90b93394} \ No newline at end of file +{1,11,"",b3caacb5-74ac-4de2-b3c3-c92e617d6ce1,"4757cf39-19aa-4067-8d10-1fedb568e7ad",bbaaf164-57b7-48a9-8d75-a2403edaeff1,"4757cf39-19aa-4067-8d10-1fedb568e7ad.0",8fe005e0-5e21-4586-8f0c-d825383c4504,"99e5fc46-2b74-422a-8731-ff39e15eefbd",20793689-ed85-4511-b8c5-12f1158fefb1,"99e5fc46-2b74-422a-8731-ff39e15eefbd.0",3b887bf8-edd7-48f8-b608-f8abbc4bc0bb,"af8543d6-5592-4827-a253-12a9ee4783b1",0d30de82-c8c7-4c4c-91e2-d76b1eb722fb,"copyinfo",3f952391-6c09-4fb3-a4b6-483cea6a7c4e,"db29e233-6e54-4ee0-becb-d918aec28d42.0",d74bbb07-5a35-4214-865c-ce82091fbce4,"root",ef0e5136-3641-4203-b4bb-b4db779dcffe,"version",5599a260-f225-4c6a-89d3-f075fbd1ac42,"versions",cb5290cd-6679-472a-a778-63a94ffe9837} \ No newline at end of file diff --git "a/\320\241\320\276\320\267\320\264\320\260\320\275\320\270\320\265Fixtures\320\224\320\273\321\217\320\235\320\260\321\207\320\260\320\273\321\214\320\275\320\276\320\263\320\276\320\227\320\260\320\277\320\276\320\273\320\275\320\265\320\275\320\270\321\217\320\221\320\260\320\267\321\213.epf" "b/\320\241\320\276\320\267\320\264\320\260\320\275\320\270\320\265Fixtures\320\224\320\273\321\217\320\235\320\260\321\207\320\260\320\273\321\214\320\275\320\276\320\263\320\276\320\227\320\260\320\277\320\276\320\273\320\275\320\265\320\275\320\270\321\217\320\221\320\260\320\267\321\213.epf" index 754935c2ce9fb5b1bfde920d9db4a9b3bcb6948e..6e87493e2d3becfe7620109492b3f935b386ef0e 100644 GIT binary patch delta 17270 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 Z2s2pwY5J;z4@{R{xExXcpMB!SLIA*n#Gn8G delta 17019 zcmZ5{b8z56vu&Jg>}+h?+H7pw*x0syv2EM7ZDV6>Y;0`3{qB9Q>fYBi(|zjH{5MlI z-P3bY>p(|pLF4oVpCv#*+$2FjzP`SI6loBUKmX=`@VhJs2q5?0I7i_h|8M>muLJ@j zsQlm9Kota}v_7u}6n@9|WtCe94CFttQ41^q?0+$dT3`x|5|CnG@Cqi;>;GBzpV*iI z{cqj>WD+x=6%xZ>kpVVtBBp=FYVr?on*O&DA;4bxSR~>PCzl!agu{GHJ#Dn@{(Lp*bg>&ic ziDlgL$;sVGJvLTTHC0=7wfm#Sd4}n{tu1{to@fS4HX46E)B+#+ou8&y@1gu&1S~hB zuXyCflH|n~CWNd1gpV{ng%jd0uJ?7d@#Jd-oy~{zv3$GB>3yPcEy?d8 zb_JZ=EV+~RU~h-1?{(g2byY;icKNvZzH6pAs_%4`w0+R1N`=W_1V?jb~X z)uV2c>f0ttS6);6cp-0hcXHIz-@2P~97W)%!EcWzT#avq$IqBIV8Vm&XFk*98@zlG zE?jAa3fbq`D&xFZtJx>Y`<8_Wxp><4%mZ*#J`*@+#Yhq~%Q&Tb_fggn54J>ZjRU22 z5Vw#U6E$h~7`IrT?fFJ);H)gxjNfr>w_~Du@H0a2I|hG!j~)THYLXch-q!rPO7IeS zIY4NY?sK~kTZ2GYeef;Q+cl99(QBloA$C)h@$I`YVc~sYV)v18E%%xgMAW@enlC_x zTuk`qg7l}AQdAqd0q1aRjT=1NCn+hVeu`N;+?W}JmEvN1HXZ`N!yQ@V!PmpfEpPta z;_>33dOY)BuiBkYZy{0B87=J?lFqmBR$w^QiAgol4c6IqEcI8~isYca>{eD*WG_W@ zFT002sm~TEUsaqQC(H_%^mgieV?2OLwGYPvCv3{JDqqi^Kid|da#;(9>h-P5QT8G3K8?k`8g1a<0E%<12yPb; zVkby%A%yPTii|i27lOI4ByT+@)XiH;<>h{IxNpqpy$OVpvZ7%|xc=mvVG%H1uE2K@ zG4ltZ!H2M;7$Ga`dp^69r%}Gx_t3@|svF)w-)$E!zJ=>QdIoLalbi+lSGat@+?`mB z6@sUL^8V-8H(^8Md(ugApp3v%?4%u{$$$$l-M7~)mTo;y*Xp~7=DIbRNIfKY?{PcS z3lp2p2I&YCHn`x!D*jvH9AOZsVzI5jV%rsz^M%NhlFl=}-Ol|Rfj<=tRLU+?jMe=p zgbJfG{qHKyhES#*y<7pFFwYQ-NAE%M+-Tq46;@B94a&lX*O{?WfJjt0F)B2wh7dCU zm!|Lv%%2{4DC7)Vu8Z_f`zQrEN{uV%-BkjVNJF;kHQaf7CJH-u(_YSow?HBxv6gc| zX&i*`s(1J*Hp9(o)O{P9Tg>9V}#s6=kOH7a~6JCd8l3@@mNDiVH@uWhg! z$r|KHmQOfEWV;bJV62-TCGX!x@*xQ&fv2d0?Xk-EE#rg*f-?{MgJ^4hV>MxEKdM^H zw7m#tW*8HuwCC*+g%Cw2S0h5Z6N#gHgkh>AFoWEVR zv6Nf@IIhvygTm)G{J5M2pNffI_L(&?G~-b;j>hciS4c?!A0{@sZIWlCf_UMh%?K*| zX`=CJ3-TA!DlR(8SxUma2pbHUy7BFWWL(`(lppe2%iNQs?AMb~Bq5&4X^%fL;EO>wIyn^#6Wv}|V-Q~q=&Jqf`d??VPDbVsw>lo{<9SbxJ9=>9Q|(2-Tw@Pr4!6{OLc-G`80T(@D= zpgi%|u1|w(oACaqN8|4k2Y9+R)sc&zm@p^f-1I#FctpC6H(b#RDGzHuH)vu+ToLV7 zK2tAbChe^KYB&s1JbBa$QOG5?xG^t^SJL10eH=F4rO4eYx}kK?;Yswp17F2$W2 zX^(i@37uwt!zsn)-7nvUef~Qq-C;#J^XQNsSvsl>l9s(Ow=poks%EIaec1Pd2CL`M zecPe{fhb=!{~ul-Pv_h36K)?0G(TFY8j0DAP3q{VMi#NZGoKFQ3choSb-mstrQFok zz#&Z!5U@Ns^xc5G2qLehq*`#LMd|Hy&dhOCnWJOZbukSvIfiXAy#q4R772rQR}zaP?5T^CdJdzkfy4O{Tw>6q$-@fQRbOEz(okGDIUjgdnR8z z(Bb8o+?dxys+wt-jytP5>N>T-%03+Dp#`ZeQ!;Cw@qbXs{7SSyB?e-IF|y1!O-OnX zAdl@r0`5d1kMCd^f_^mdR8~LhzqH5jCzp2M2V-7PH9@QAb7QKSPkS)0GQiTuVc^XF z$=>7nW1lEx6z> zZ16QxSe56*x$wh}L<@3TaXV37&-4Bz?HuU`HK(6Z|L(R3<8G69N!SSVmHSOKX*2Gl zL`Jml00WlB+By%ynLb@c!7i6<;Xuq47ZpeJhI8*v3zjbf|PZro>Q1JBAqxU4qHfLnnvCrD;uHOHOWYkWjw~w+diof|2N1V z^!EZN+nKef2<(zi)`F{QtC!Xn* zknh(F^bM7h@;$uzAqgZ~hD#(3Xp1eI{Sm3SZMa}%?HHR?fpy;%^7e1JvVT07uL7ji8S(s!Lvl_Q_*O0fnV2m)}+nF)NhgT}}tNvDNC8UEX<;C|AgYXL4L?Dp`<0aGB z99sF9w3ljn^5>m5D{b4jQNptId?E*Q z_Y&^2=&7>oachAQ)$Qs}&a?lW(AV6PT$kg!ojfmN&@8?W`?H5#ZR?81 zBd4AFW98uf%xuX1{P;fQ6F=+ocs#fl(oe7J6-IpTz4p}5qHk9xpI1l#;LC=S<9m1_ z?|ZNNHY5!lo4xk6uKbr4=?Sst`i`*Yb%b^H$H#Bne&yM}!2aRR-0TxlRp5~o(pTQo z#pep}`VlyrND=e?YI07w4eW)6#-uZT?U+&K{&<+MV(hwEt)xW4=YP4Th0f(!bwd2S zWbL2Ly6U}kzZx3k_ufs0Dn-)xB)&=w=RCAMHJmyd zF;;q*d&3}ls($PZD$jwWp`0Xlk7S0sut)7!Mr6Hqe~befBa|Bb0V?jK`8j+~wKYIV z@t0rAzQ?yRjn#s6JLw@ZgUBrLmX6e62XmD_HyL7gcwwQ_7bf301}9O&^il+_8=jjI z%E%evY$F##q#>#8M~iO-I#uvOL)J?T$X>@)6-YyX#rWoH*d2 zf*{9#ZxS6zZxdOCG7+8sFoU-!97q9ZwBtuj)tvP7rVlS55oF!gk zCnT3zrVFA?R?UK4%cjV+P$s?x}8Fle}Ap_*b_v zZZEzbsfn_2wB3`r{lu^~FY#8zRBg6AR+%-&E!Gi22X=-LLY|hPmBoZKa+h2k=g&2} zHLRU_TkI2Zf9t?D2rN#aYr=uA9v{Y@fJ2nZ8+`g6Sg;J_Io>upKbGDvS=*`wo#A3W zq<(%nv+cBZzIF#AN5o}R9BUz|oHpn+W{IfqCm)1r4kBeT8RU1k_rXXng7t2GSh@1cdT0sDTG|k8e^OYQ-70Q2SD;0zs8dxA)tVb+R+0LjZA>Ln;6tXcHa5K;!s^ z54D|pGZ)lY)O~&{l*`@h2pJ0p!u?gyB2T)%*(WeaAKfcF*Mdv%83skMjDpRXz$&LP z5|0VsZ3nHW)gL?GExR{oKJl5~^zN+MC7OPFy>`avo93Upp(BfC5L)S!oOF{I9iQ!K znq}w~Cfo!0i>knRodqPHO9nm@ag6R}fTGlrk#_l&cIlM9jf`{c=pB@h>TT$nh14{V z(l3u2Ig4GxzO*2|QTB;2j-~D;%Xvp9SJ%XcEUoDfX>pH|KaS62ptPpTxb`LDb_XR% zy>|E=c&4fn5Rb4d4{%t}Mac9~9t^G|x?xdop|h4*@fd2mNCO7au&@04bp`?;OZ;)O z0nMUJG)iWO%F<1pj-R1o6NK&>jdkgJ{oo&`FP|>Amc`egjuiDA`DSqPRL}%g`z2En*M zwWXDRlgwU!5EMX$5Jan1v{7G%gX@S%N{GtJ%c4t-=+iPj+2R|;wnGwG)RFksDtIiY zEp45F);?ZhYS9YCd2Pyr%s#6=sd!op>9PKcuOr;hS&?KQ;%13#EW-4@!1ewXd)1i7 zOsK(~3@Omh2*PDsvgccqiI}Jqtjj|s*HeR{(lddw4m>dOr*ThVR`$&@SgFR_7gSM; zhZ8mkmMpXNx3ka?AusdcX^VMRtbwKiyYzzMLFUhe?Ly4+jd{*;O_zJc_<36r7x2b%5r?MPw5uYz^ z*l;`gydi+Q(+I>y6PyZeLqhpUmOTI#ItyEfYc0qcw`;Py*j|+OF12Ho0}^Z4LZJA;|$5fRd8Hj=1?g{p6yfs~y)`I}1BND-LMi6U#aj>D3#*|=Z_`UY% zfVI?Q0%Y6aNFt~fQ$26VJw^I&?Wvd}g-~c->6CkRu-QNO(jB_e9X-_alNvYG$rB+d zO*Dacs{UMPNI|lCJO?&*$ym5YsS3h&2I90+Kg21nU|W|(tbAhDWlmJ{H&MOPz%vi` z!)Smu8GmBear6vwT1-8ESfP0Fgs|iy%}0OcOKWeCqC~-hkL~Rb(ilQ73E61eO;#(^ zCX4kjOFBkFBMhZt1i%10C<(ig-6H3^yPb*EPvvhFZ&o=F@JpW9*JkiLRJ$7LB@5RbHR<6fD8{_2s@=75qgM_r{aZjS& z(w=nvBdW^c%(~U5RV_X8&~ww2sdS7V3WehHI~48)$kKflQUqX zNc1>~yji zYLoP9n|&`tez|-W4!he4AN`vof;wQ3!wWB>6L#dY#pB86AQ@~!vqK^h@1r-ZrT(LX zXn>5j{hZDAuxltG=pd_UZD-ziiM-Z&%l$1X>Yajkd?V4#zb|e(0gCp90injorCszfLo<4~SL3^lT)IJF-jMtzQX=UgFox?m$q#U9PkQUBg1UbjJCOZospQ4Pz2 zQk8_AdPFdCr^aB15@!`lAI$G|;{k#!eNt~aG>8mJ>td+c2|`#4%VrJd>yTvoDL%@# z6IOSS+mAUc|hKUewtb zYn0m_Nd_8%T8;HOHMtC}=o0|Ae@)|TqO<{=gTK&7Uk5Te`Y1i5HwGtaV_+AB#eoj! z39Lr|gVr|LiFa<-7ea?Z5O}7rnqG6m)w6sIWR+=#x>x#*2QVv2fHEl>JaecWu>}7maTv zwh;3{l;A{L^r)?)3v!ImohSJLK61yi?7ulgIZK`&$%1JRexp*nh3s^2Hv#%^mnlN0 zH-7U2f$9&{JWQDZ+IBOU$JJX|`lX(cAKjSNVUT)wkL9x3{0;EYAB8&L-po(~tA|xj z=|xI*sEqtcrH4i#hTHmW6c$TOlsB$JX*{ZLhDhH+3ECM6rRn!FI~d%v`sw^3P~>JS z1zs&hqO1hk?6{^WxTs$jokVz;wTh7#S$4;}s^{~XV=ZVF{TbTHQG{y_t??9M>xYj$P-9l8?tx7a za~gqvV-F>^(;x0P>cY~jekNdPY82d)0aX` z37QVTE35qD_@^TY%G56XN-=uG@Opxz^Q_faMrL6*z!Is}`$3x3nsP15Dy>yAx;#2q zRKmWRC4531n_RI5R$lYx7$XAiV|FEb8|J{9aLYIRI-brRpqK1(uDbX zFR^!~7Pl5XM-1(LRY$~5?T_v2aBrrx5Ox4aTr_I|W%fl6PZJq}KaIatY{*Ja8<97e zK($IbAT*!n(Ghmgym>^Bym;3*&vURgE>F#{)L9-x44NCYV!Di2A*{{+kk=9Bra%rc znC}nQ3%adEd-n!W!^V&ZqZ0kAI%%wGG^L#zlz~`)4_0xF+oEdO-r4=Ktm;)JvC$8p zjBQk#nY%!cw@bI9o2tDK$$TUg($YF1SF{;#9ue4JVHuVOu_>+5@gcVN%>E5^&}O6g2PCd_ zRO_jbMMxLjFCZdSg@(A@2f9Y(dUFnN@wgs#>}c)?Q(Kx*D=#n87RwjtxENIXb^KY} z&Y`}QnSH?{pWVEqq}N#QyU?h&(R9GUtKAZfA?5^)W>9sxxz^A;Rdw2^EZsp?(gZd$ zq{>_j#-nw5iz5p|yo7Ag8ChQIn=|`YR`z~ZvI_Z?{%4J$y2fP*{fHv;J%!Q?1yKqV(g|sKGqLqvt|R*Og6VKBCgC$}!d_(6|ho@SJ4 zb9v@LF33&}V!(FBBbJTe6NC;(Oh1Y;-y)x5{RB~zg+Nws(|3;Ye*Bjd3$+U33~5%( z{npuUu#0+(^GZ)A>#eG}YQxj7YF;X^);gTUO)pi;;7(g6AydxQVzol{?D^HQY?H^0 zi9DV8y9K$NeY2_~0jAZ1B-GF@$%>9T*M>BTAhNbURDnJxEZ!@;tmlg)syB>rBz5;C z@*v+z1W70Ci~f@`y2*w4Q=DarA2`?E{+(z|!3*-WfP4 zMB-}95;Ul6R1`R{@K-)sW?g>B#3djb5_5wSn-z7UZc{gTcr=O-J;JKB_hm*#HtuOy zElnsFq!S}+WrF!EsadeX*;}f#y8aE<^F#Y}kuJ{8*Tr;GRkSK8G>O9?roLCpM0{^m zf(K9nd5i<a#wu+ZUj)gn74#VpI!FdNwuv2C65+51|ol zj8fWh04dWj&*r{EpU^1U6?h$bKY&+(Pa1x3nW0d$GXTzW>OP8Pg+3l_b(OUnt*&R@p5THIot-z28a zZIA5T1E2tE5~!fl14ee846c{xuSCdX89 z6)QXliO)U|O>L8Ou-S8u& zm_qc^$Ac2T-9d508HsA)t4>rKMyov__X_XxKD_X%?=C?+OSwzYG$644C-o-(af>?XJYJ{VWL`Bwi+4M}L`K(DTL0(ctN=bM5AgWjak^IQ zp}0`c2073s(bG2^iL-QO?7bF_V#(dnse)Nrkk+|e@;pq@^eildft9|GGWLSV!ccd8 z+%_WHNPYcc?esB?v0nY4X6AS=ck?rg{j}blbY{7Ej)J(z0{3NY+hGt5MPP zUtdf-s)iiewDQr#Zf-f43*a@4Hp)c}UJr@RZY*8$xW!O=H1r9LW!cr5FO)DM33bvo zS70UHs0FY8p8Dd(NN(~b0g-wG$n1_!g1i*jFn>O51sq@|1U3u{0LSyM+N3lwJ`=Gr z%I@Xn8YqR~`byl;$zLn&f(eMc>j%{g^W1egU6sT*X+EHC4v_(k0Jdj6cYZj=iM^xm zEr)L0EjpjJwKrVIoxw2DBba7TJQQQ%3d1mAEB^1y`2l6618>Y_L-k}Ut8jc+SW29l zzNKiD><_tCq|D~jQ;0e|n=fZDv#LN96%hiha6K2~DfFwIBXZ%X*J1)Ki-ySjgeu#c zf1S;YVljGY=!WBH0F>{_cLhuPD)47q$8d=Zrxo>T8V6}fv`Zsyde*LA$=cb)wM2MIsMGA%?hIXEN%s2FkjnrFZ z5wiy#*4$;xi0inX$`l9LVzA_3gq&1V+a-5!=c+md(je3AAa-s-NGZ(c={%Ey(x1y* zaTQbW^{OqeK*-cj4uD#t?ex2bON0cSHU$dXACxjur!J&}pvi73m_X)K9mES%7s?~mrrB!c=6hYKh64eUR;SZ5i zm`*=yfbk8CwhH%5O(zWbrTSf%cCvc^Dt2_@@~st_MgKd z@Fx!fi^T{uRskxr$7R=2f`UKT4Gp(Ii7^DsU}AE0Ixym<78@tg-9^ z*R)veL^G5wd&pP8p0QE7Y1C_~T4nxhN^)W>-GCB+2fhmKyPsN+}B zB#&a7j>?$X#2zt_)%^UA$gP)KV)jelM5+{Y#}_^WX2e~&`A21>#~B)J70<_buAJUQ z0NrsBl-2_J49yrtvT=0n;SZ0XInf<)<8CN-dQ14Qd?{oSf9hyWno9 zYFGi>3!>2_FzCJ^KU-Ub0y1&FK~&SOpxAEsHszcq*a4E6m z2~_FXF!d!%k3DmJHy;$?x9pjr@yi%2=VG$-Jc@^rkQ-G-m0>S3=w88#8Oo8e3Naai zInpDw`v%8RS)Eltv!*tUNUb-L3&fL-7H|o3JY6Wcpy|%UNkAoTE%PQoa*GJ}XDV$Hbh2ZV>3co`lg z6SeYBRFs@yb@4LcQBX+YRyw<7(|o~NNyFSK;K?Gem?1dEWClguc6uapX&=?+4n|p! zRre{7Vh0uSnpBLN_WP%oJYj$>4y+AmLj>o3CF3MsF=7E&qvAJjJExxzJzwFQ z9RZ+2lh5|A$gRId2_87~x`ulEx^*Zn(yhDZZ)#~@n7iMwG(eqa|I9H6eN-YwuQqCghO%tFNvIfqV6 zATrh+L5A?CMnVG4P8FoXe{}N7!#)qci7l|LL2e5@7LK%lmY6O}kB3h!DEvZlWG;QZ7j(cb;O@4Q) zX@ix4aN^(VJC&yolR*D5IK2c+bihhh+P#(JrOIV5{!|{k=uVbsJ_l~SpMq6I`(zCYDnNNzT;z@$_-Bb-F3w66!;EHB2Ojj)uWCIaB5j^uOIxxc9O z)_5$K$7v-!6wAmfnCX79%pAWM3)mxOcq0o;{EaP7Y-I@`5zc->OI=m;qOl|>15Pb# z=DnNML+E}I3Y#Py-=aB9M+RT8$)r;JR_#ikHqrW(G066%)J>)8!b12i(L53xyF$Wour+}O$%S<;ML!F!J)x7>{QYWQi_Mx>esnW zK@;b1O&t?#g=A8yEgr|xuCj(MiC^@8lW=Xq9Scvhdguul8$%~+RHk+{vL{j}TdH

zSB&0zte1IrvNNQ3ti)U74NBw`L$ABc56?w@X=r(mh^|`SI~(F zGR<#rZf*>rv`PpKwO~!Q6!R5l5G6{#@B~bXkzCLlxP_BNJiHAF;=`wFyH@Y=RQ1{H zx*XT<*OfD!;^nJVN*JNbb-9^6IMoMkejbtO1=EFDrMW#^Azv*q3GNwDK?90KsYQjL&(J~J&j%q_gNcEVe~%)K(_nd6DuW=#{1S}lQ=Y1ag7wIkjUgT zJY(sreo_QIbPmxO`>T5#>g?mM|GXrt$HP49o_MsTK$BDa=o~6e&Th--T>3bTHyYfp z&Gx)`n9~n(oRGb^65URY$^Z^z?!64SN6*KbMNV}D-qJ!a{wgJRe|655qf6}Gm47rh z|#SEjhy{(IEmm4*CYo1mnNy!gJ7J#9tgM(abq9XgUm zTNF}Myk8+rA-mW23(CDb_m%ULjFF_zTd}!&4}Swb7lZ>7#pSa8?g5S14H&5M2DMcm ze;dtWRHOJ$zGLblkY11XgGg?|m*PIRR>c?TJ69w7b9yk|E!KtfPN(*5jkxdXYEVkv zZwQ15WO9RN_V#QQ zZ^3A|yWF5p3LF)m?#JhMp63h2<&M?tv6>6SHnf}lcP61qnOi|FPY@qw%B24^9VAtp zHEXxLqc7b5jQvV@`5In!4+3Q1%;q|Fr@e?*Scgem68A_o-vIAC|0{`^zSbhO$0=f2#L-eORCd zOMhPP9?tu6_ySf6`%g<_kY>An?CsERWE*e@p%G#_qj?ITMU31+K-{PZg;4jaP<3(d zMUCe{NaRxvFdR;4;WBs>!uLm0JZZ|qUZrf#3ehfrY4n6bV!0Bhk@-++d)M&!8p1Oq zq1k19F5MW7FSoh`(NC>}bLt_?;_=SozL$9IA;=brcL0_RKZ>B+8#))}f^*#6D^eWo z$H2S4azdme-_ef5g(iUMsS|{l4`O zvJ$BgOVz@(73mvSr!QKttg&$;?FPg`0Nkvu+7ufNiI-gX0DAjVegUSX)mQqM4>`Z=W13Hkk1kvwO{oF!Dnv@^38ano+A!I z7!WfYE(2BDi7SkT5mgXQMAiuzJ&tj-AaEP!xpGVl&%QCvCe4!hKdl?{j{L=V<_LMWHAjqAyPOsaLUAMcR)0}A>HKEt?G6KJ%E&kyol@g{a` zH=-$RaaIrPcSlwCm>S9DWM1%R4a5`qnPU&d7(gVDXD9Q{3ea7xB z_@H<2*Ce_Q4U7mXCD{k4M0e%Fn=&Qzi+}dpZiq9w;zOe;O|vJ>;02N_ zHcU5kE-ZcE^hdZYQy?U1EH5iCfIL1sbSqb~g$+dA-H)n`Op7T1>Rik@N4OHKl&fn4znFL@Q9=!7HJYT*Em+6aAn<+WRK|L^x z03;L(iMcSj?A+=(78QPYbd$o8#c#4+D+j?1*!6TM%JeN|1QzUl6?)bKc5mf;ZQK?= zt+eZT?xP4u5e7FZ!$=Kp&g6P#5y{`D6G-LmJOs9CL|3kfr+OQZmX;UynSu0U_ z;25dU2_%#uvt0Y zCJ_TNiakjo|5#W+KOwhAlR(7(GWn z$mZr)OuY@H0ju#mag5$@_H&5a#l#uEm{?M#HFjxQa~F1A0xSR70+@!B>IrK9y0Nbp zbvge}uCcFpIi6gjwAKhCJ4g?VP!qE^~arq}G^ zOmL*Z`OUoO+Lt4HMM~Yjwv|h3;VO=4qprzTOx7Wfl1}}chP2PLq=P&$zJ%%E_06{U zH!G|n56qIQ+W=fgM|gw5U+V>J=f%Al728i0*vAS5Smlcwz)FLew8j9=GvibxqDcw| z7dgvFbL}VkESq*Yg)Ps|+ET^#B*Uty$wrLZ_hWdewfRW&YQv7WHYz1*3p)P-q|&!P z*6}Lk+<{8Lldm2i&2dw`g7sY=cQ!58Of;tIsKTl@`C6=1o4l5ALm;BM`7!st$MfrF zhO|f7i?@+~fq2WXmP?xQOLkPYwGk4Fbs35qksZ}dfiq0FZ?*XiW?rL0MbNdhKd1~? z|A>0j&lo~oRs~DVu9AU_ZwN0=2n0TR;ex6v9@CuapeakFKEr$3x*|U2{ zuVRDi8*PI(--R*kyF0PZ3tJcWE3cR*mHP1(^W$%Y5is}5x7Y3cWPX2C4&T?+dGETi z+o({v)N|x>t9(9DNG)&5h^@ zZr3(H-Sl}T=Ckt0AoLK8k!jr-!~PfTvm9c-Gvd+W^95KLFm}@HVY>6J<2=`c8WvbMnq(;u?Dl79*F8ej= zLYHqUy9F&=M%|#@8d#EhnLd^0`Nvj}wv3{uB?UzVYhz;>D#OI@X&NE}ntIw8bP3FS z3u>-Ppvm%U3RcGEu9O0FcJj4+<%4cS9w2p7nCVk&59Gm@-F+-KQpU(Rhg*-RT_N61 zBVXzxP2r;W0w@Zr?Z<^*eODyk>iQJI_fUP z$$F;ilxM&9{inaWnxJ%{bYSF~!jPL+f~a`5QGIS%Axb{3iHb&4n^Xd_4MRVp0f;4J z2+>NINY|Rdu=*;PX%+AD5>tE9C{74<1A1JvMpxrj{Yy^rFOG&8|9#5pD|}xcF7GP0 zj!^<%LuWb{c`V4k=zgW9R@_MgMvx3oNy3P3`Xs%+F7MBFa_kVL_4L}X4=UBFi2w9S zDI`m0n5`IKL-9B>;>njff->w|Kn=mp4-yJl1qJJY6;tx1NF5(J@H(yf9myw06ay;+ zZ9Uod8QX=*ka@Yr9PU^_WKuKNI15rWS&(xrekm#2+gsaL$yLEiuz|<7wCtn;s;jp@ zKB1s``d0+mVjTPU`<jI znH(YTaBc5=##tJh%XQIVn}J8nJ}~x3VHNOG@Kqco*()ogVJ&P=M@kgU`v9l%oAz3Y zXfTXDUZ^lgu`-9i@)5irKpB5?kUQ?n_H6RvDi1euA9}qp_7^FjY~QsYf2~ox#^Sz^ zh>gzb1Sfyv31IN`*uLA@*sOF9fs5?Fs8zB*0&ukdBF5YSdJbKO_PtKSH`T8< zXv|Htui7{Uaa+<{`3WFMH}G(bHk#pAIHAP=E?0zFPWZw2V<_8M(y?H1{Ab8+W;R~q zj^~ntD^S6xZ}u4!elhX}xFI%J-HBgv+b{=kEy=pfr?l|wwkH~oeNpfma3dibt)zu^ zp(VdU|Jr{SE4=9ga1^UtPIxDSysv3vU}G3h!%Cs0-bjkh`CDiQNO=Mbe}DTmHy1M9 zL}L6$tFhAL-L0QARpu6G~J3)9G z>BHv=^!*O+)vY-CusaW9ae2CRx=@%n>iq5~A-}#>;2kpeU9D{@n$L)YcVJR&^x*Sm z`}^tHtg_TduRDyw;~d=-@f`s)9#R}3guji)c$vM7BIC8LnK`Z+TLkz> zQvg{rekBqNSnq`IUHdiqJ^l#QQ&vO}7Gz%p*L*RYr-vJZ_Eloc=A^=)C+j4#B0|7s zkoCt~^N78k-39!(3_>92FD^sw@7?x`l#^eA-~Y)rSX(|~aEs8oMX{|+A&(9*(hej- zOrY+_tl-?KwK0?sN{88Q@IEA*`36xRD338+I0hxwfS{Gc_T=Vhd`$y$_nwWLf)aE@ z7EiT3vglQOUi%~IJ^wOmFu^r02@bsGRIc~P@yu`N+azlB7|e^E2l_i5;R!?ntIlU1 z7qA$ep0@p611owb9uIdm-3x?bzqapX2hT!%1`*!;=kLH~>!uaiIKb_!MKLK)1so|v z6nT^L0f9>sS*?-+SqAC+4p7?dK6LJHOCPHh{pux{Dy`>9r0luO3V(_w+1JDr_*V7> zv%@4M(S%0zmK~%mV46D-pKFdW6V-3xrDdXe7TluiH=N)(anhg^#d1&(U-b^Ob41w^ zA*{JBA%0mmamcaw+F<(4xYX$vFl|&VI0~w?1061va_5#R2kQ-$Ck4M~gn7{ooOJZJ ze^eZJXYRkF@~K2M56Ow~8EL0aPyK1izHb;-##5HVr%7r*PZu>^dw-znoGBa~?;uZz z>YRBvzghXX@a)q^YCIcqQ>{u?Y;iwXk< z8~!Me!a~BItDHiuW;l8$h+PErFo7tnFBi_ciB$qh`>4dQef!JUn!d(JP%XQe1oMA$ zgva7Fk_^;4N-l%^&ykRE%iPeJy|ab1eN$TnZ@6cWW(cO1_3k{|yivyCMurwCzdM%n z#T}TWG8Oeyejk-R?f)&@9^ zK6m8U+XdnK-ayxhOirvOQtvJQQ3G>eXoNGI(9^n4Ao+*U$q10Qy{J^VI5xr{$HHZy zSeRAqRz)41HNUm$K^)3A4=XILtq94IWsC-5OQyM^gfO54%e3?w3kIkpY5r2JZf|TQ z4^PAfsGZDuOnJz7B;U~-emnklnBgSbzPqV_m<4{wK4TSRHQc6_B%URnc*nR|U(65f5^VytKNIyP#$ z2eiFgZ8jX-R@`HKHb&Gh_J>>@!UCIJ!WnH_0+rnsTXdgh8gSEhpnDEuI}&%Qd`Sus zFsxq*wz%0`?PN~P928)>CyC3w}>;L@!b%fWSevi;y{COXsS4ieS z-y8V)f2ddRzer{LX)kY}@%6UhY6tiaqJBXVd*c|@hitfHs+RwfEm?!l( zJoo94WL#v-pM1LD=bY=)%kF;lf7Zk1lFXo6Z&t9b$HLs&vfWG7_;$@CwJ-HQtIGo< zIhO0?JlX3XV$^q}!)8Ok&y|aISqj}cVCVKjVr}iY*E7#ZJ#%q%cv8I$Bj3) zokgD4{tR5UQO#g_!xrueecQ6_dp%27rio`I&*b|&N5^aag4sN2JzIM&iTZ3N!De^_@!#{nisM-DQ*RN5g`rQjW=$=5(=f|sckdND|8C{~Pv2jc?M}}>-t8iw?RD+Ls;^CMcejLX MIsD>!{KSog04H)RjsO4v From 78ac3ebad015ee91f57517f3980cae6d7a0cc7f9 Mon Sep 17 00:00:00 2001 From: Sehnja Sosna Date: Thu, 17 Sep 2015 12:44:44 +0300 Subject: [PATCH 4/4] =?UTF-8?q?=D0=94=D0=BE=D0=B1=D0=B0=D0=B2=D0=B8=D0=BB?= =?UTF-8?q?=20=D1=84=D0=BE=D1=80=D0=BC=D1=83=20=D0=A3=D0=A4,=20=D0=B3?= =?UTF-8?q?=D0=B5=D0=BD=D0=B5=D1=80=D0=B0=D1=86=D0=B8=D1=8E=20=D0=B2=20xun?= =?UTF-8?q?it=20=D1=81=D1=82=D0=B8=D0=BB=D0=B5,=20=D1=81=20=D1=81=D0=BE?= =?UTF-8?q?=D0=B7=D0=B4=D0=B0=D0=BD=D0=B8=D0=B5=D0=BC=20=D1=82=D0=B5=D1=81?= =?UTF-8?q?=D1=82=D0=BE=D0=B2.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../form" | 14 +- .../module" | 2987 ++++++++--------- ...0\244\320\276\321\200\320\274\320\260.txt" | 96 + .../ObjectModule.txt" | 545 ++- .../renames.txt" | 31 +- .../und/4757cf39-19aa-4067-8d10-1fedb568e7ad" | 10 +- .../und/4bde79a9-e308-4a4f-9526-427ff7b05423" | 15 + .../4bde79a9-e308-4a4f-9526-427ff7b05423.0" | 887 +++++ .../und/87502c3a-d318-40d9-a888-4d4cf603f7fc" | 6 + .../87502c3a-d318-40d9-a888-4d4cf603f7fc.0" | 61 + .../und/99e5fc46-2b74-422a-8731-ff39e15eefbd" | 28 +- .../und/af8543d6-5592-4827-a253-12a9ee4783b1" | 32 +- .../und/copyinfo" | 33 +- .../und/version" | 4 +- .../und/versions" | 2 +- ...2\320\265\321\202\320\260\320\274_mxl.txt" | 4 +- ...\320\264\321\203\320\273\321\217xUnit.txt" | 61 + ...1\217\320\221\320\260\320\267\321\213.epf" | Bin 22551 -> 32398 bytes 18 files changed, 3245 insertions(+), 1571 deletions(-) create mode 100644 "src/\320\241\320\276\320\267\320\264\320\260\320\275\320\270\320\265Fixtures\320\224\320\273\321\217\320\235\320\260\321\207\320\260\320\273\321\214\320\275\320\276\320\263\320\276\320\227\320\260\320\277\320\276\320\273\320\275\320\265\320\275\320\270\321\217\320\221\320\260\320\267\321\213/Form/\320\244\320\276\321\200\320\274\320\260\320\243\320\277\321\200/\320\244\320\276\321\200\320\274\320\260.txt" create mode 100644 "src/\320\241\320\276\320\267\320\264\320\260\320\275\320\270\320\265Fixtures\320\224\320\273\321\217\320\235\320\260\321\207\320\260\320\273\321\214\320\275\320\276\320\263\320\276\320\227\320\260\320\277\320\276\320\273\320\275\320\265\320\275\320\270\321\217\320\221\320\260\320\267\321\213/und/4bde79a9-e308-4a4f-9526-427ff7b05423" create mode 100644 "src/\320\241\320\276\320\267\320\264\320\260\320\275\320\270\320\265Fixtures\320\224\320\273\321\217\320\235\320\260\321\207\320\260\320\273\321\214\320\275\320\276\320\263\320\276\320\227\320\260\320\277\320\276\320\273\320\275\320\265\320\275\320\270\321\217\320\221\320\260\320\267\321\213/und/4bde79a9-e308-4a4f-9526-427ff7b05423.0" create mode 100644 "src/\320\241\320\276\320\267\320\264\320\260\320\275\320\270\320\265Fixtures\320\224\320\273\321\217\320\235\320\260\321\207\320\260\320\273\321\214\320\275\320\276\320\263\320\276\320\227\320\260\320\277\320\276\320\273\320\275\320\265\320\275\320\270\321\217\320\221\320\260\320\267\321\213/und/87502c3a-d318-40d9-a888-4d4cf603f7fc" create mode 100644 "src/\320\241\320\276\320\267\320\264\320\260\320\275\320\270\320\265Fixtures\320\224\320\273\321\217\320\235\320\260\321\207\320\260\320\273\321\214\320\275\320\276\320\263\320\276\320\227\320\260\320\277\320\276\320\273\320\275\320\265\320\275\320\270\321\217\320\221\320\260\320\267\321\213/und/87502c3a-d318-40d9-a888-4d4cf603f7fc.0" create mode 100644 "src/\320\241\320\276\320\267\320\264\320\260\320\275\320\270\320\265Fixtures\320\224\320\273\321\217\320\235\320\260\321\207\320\260\320\273\321\214\320\275\320\276\320\263\320\276\320\227\320\260\320\277\320\276\320\273\320\275\320\265\320\275\320\270\321\217\320\221\320\260\320\267\321\213/\320\234\320\260\320\272\320\265\321\202\321\213/\320\250\320\260\320\261\320\273\320\276\320\275\320\242\320\265\320\272\321\201\321\202\320\260\320\234\320\276\320\264\321\203\320\273\321\217xUnit.txt" diff --git "a/src/\320\241\320\276\320\267\320\264\320\260\320\275\320\270\320\265Fixtures\320\224\320\273\321\217\320\235\320\260\321\207\320\260\320\273\321\214\320\275\320\276\320\263\320\276\320\227\320\260\320\277\320\276\320\273\320\275\320\265\320\275\320\270\321\217\320\221\320\260\320\267\321\213/Form/\320\244\320\276\321\200\320\274\320\260/form" "b/src/\320\241\320\276\320\267\320\264\320\260\320\275\320\270\320\265Fixtures\320\224\320\273\321\217\320\235\320\260\321\207\320\260\320\273\321\214\320\275\320\276\320\263\320\276\320\227\320\260\320\277\320\276\320\273\320\275\320\265\320\275\320\270\321\217\320\221\320\260\320\267\321\213/Form/\320\244\320\276\321\200\320\274\320\260/form" index 06b8c44..91f5b39 100644 --- "a/src/\320\241\320\276\320\267\320\264\320\260\320\275\320\270\320\265Fixtures\320\224\320\273\321\217\320\235\320\260\321\207\320\260\320\273\321\214\320\275\320\276\320\263\320\276\320\227\320\260\320\277\320\276\320\273\320\275\320\265\320\275\320\270\321\217\320\221\320\260\320\267\321\213/Form/\320\244\320\276\321\200\320\274\320\260/form" +++ "b/src/\320\241\320\276\320\267\320\264\320\260\320\275\320\270\320\265Fixtures\320\224\320\273\321\217\320\235\320\260\321\207\320\260\320\273\321\214\320\275\320\276\320\263\320\276\320\227\320\260\320\277\320\276\320\273\320\275\320\265\320\275\320\270\321\217\320\221\320\260\320\267\321\213/Form/\320\244\320\276\321\200\320\274\320\260/form" @@ -166,14 +166,14 @@ {0},7,1,0,00000000-0000-0000-0000-000000000000}, {1,0},0,0},9,2,0,2,0,1, {5,38a2bd79-81a8-456d-981f-b55d6bfa5fa5,4,1,2, -{6,1d5badd3-1b14-40ef-8548-6dec8ff1e0e9,1,abde0c9a-18a6-4e0c-bbaa-af26b911b3e6, +{6,3866864d-0692-4b09-a680-8b508bd581aa,1,abde0c9a-18a6-4e0c-bbaa-af26b911b3e6, {1,9d0a2e40-b978-11d4-84b6-008048da06df,0},0}, -{6,c67459dd-c02b-46ae-afee-c84632256cf0,1,fbe38877-b914-4fd5-8540-07dde06ba2e1, +{6,f820c250-3622-4363-a93a-d3927c2c6198,1,fbe38877-b914-4fd5-8540-07dde06ba2e1, {6,2,00000000-0000-0000-0000-000000000000,142, {1,0,357c6a54-357d-425d-a2bd-22f4f6e86c87,2147483647,0},0,1},0},1, -{5,b78f2e80-ec68-11d4-9dcf-0050bae2bc79,4,0,2,1d5badd3-1b14-40ef-8548-6dec8ff1e0e9, +{5,b78f2e80-ec68-11d4-9dcf-0050bae2bc79,4,0,2,3866864d-0692-4b09-a680-8b508bd581aa, {8,"Разделитель",0,1, -{1,0},0,38a2bd79-81a8-456d-981f-b55d6bfa5fa5,2,1e2,2,1,1,0,1,0,0},c67459dd-c02b-46ae-afee-c84632256cf0, +{1,0},0,38a2bd79-81a8-456d-981f-b55d6bfa5fa5,2,1e2,2,1,1,0,1,0,0},f820c250-3622-4363-a93a-d3927c2c6198, {8,"ОсновныеДействияФормыЗакрыть",0,1, {1,1, {"ru","Закрыть"} @@ -1407,7 +1407,7 @@ {3,0, {0},0,0,0,48312c09-257f-4b29-b280-284dd89efc1e}, {1,0},0,0},9,2,1,0,1,1, -{5,c3ed1a36-1a78-4de5-af21-f021e23c48fe,70,1,0,1, +{5,c3ed1a36-1a78-4de5-af21-f021e23c48fe,85,1,0,1, {5,b78f2e80-ec68-11d4-9dcf-0050bae2bc79,4,0,0, {0,0, {0} @@ -2120,7 +2120,7 @@ CYGcwWBPZwKqGvLSfenfygT8jsON3BLEihiIbw==},0} {3,0, {0},0,0,0,48312c09-257f-4b29-b280-284dd89efc1e}, {1,0},0,0},9,2,1,0,1,1, -{5,c3ed1a36-1a78-4de5-af21-f021e23c48fe,101,1,0,1, +{5,c3ed1a36-1a78-4de5-af21-f021e23c48fe,116,1,0,1, {5,b78f2e80-ec68-11d4-9dcf-0050bae2bc79,4,0,0, {0,0, {0} @@ -2377,7 +2377,7 @@ CYGcwWBPZwKqGvLSfenfygT8jsON3BLEihiIbw==},0} {0} } } -},619,419,1,0,1,4,4,748}, +},619,419,1,0,1,4,4,757}, { {1},25, {16, diff --git "a/src/\320\241\320\276\320\267\320\264\320\260\320\275\320\270\320\265Fixtures\320\224\320\273\321\217\320\235\320\260\321\207\320\260\320\273\321\214\320\275\320\276\320\263\320\276\320\227\320\260\320\277\320\276\320\273\320\275\320\265\320\275\320\270\321\217\320\221\320\260\320\267\321\213/Form/\320\244\320\276\321\200\320\274\320\260/module" "b/src/\320\241\320\276\320\267\320\264\320\260\320\275\320\270\320\265Fixtures\320\224\320\273\321\217\320\235\320\260\321\207\320\260\320\273\321\214\320\275\320\276\320\263\320\276\320\227\320\260\320\277\320\276\320\273\320\275\320\265\320\275\320\270\321\217\320\221\320\260\320\267\321\213/Form/\320\244\320\276\321\200\320\274\320\260/module" index 14bc8e6..82da536 100644 --- "a/src/\320\241\320\276\320\267\320\264\320\260\320\275\320\270\320\265Fixtures\320\224\320\273\321\217\320\235\320\260\321\207\320\260\320\273\321\214\320\275\320\276\320\263\320\276\320\227\320\260\320\277\320\276\320\273\320\275\320\265\320\275\320\270\321\217\320\221\320\260\320\267\321\213/Form/\320\244\320\276\321\200\320\274\320\260/module" +++ "b/src/\320\241\320\276\320\267\320\264\320\260\320\275\320\270\320\265Fixtures\320\224\320\273\321\217\320\235\320\260\321\207\320\260\320\273\321\214\320\275\320\276\320\263\320\276\320\227\320\260\320\277\320\276\320\273\320\275\320\265\320\275\320\270\321\217\320\221\320\260\320\267\321\213/Form/\320\244\320\276\321\200\320\274\320\260/module" @@ -1,1494 +1,1493 @@ -Перем СчетчикОбъектов; - - -Процедура КнопкаВыполнитьНажатие(Кнопка) - // Вставить содержимое обработчика. -КонецПроцедуры - -Функция ПолучитьМассивКонстантДляОбработки() - Массив = Новый Массив; - - Для каждого Элем Из Метаданные.Константы Цикл - //Сообщить(Элем); - Имя = Элем.Имя; - Массив.Добавить(Имя); - КонецЦикла; - - Возврат Массив; -КонецФункции - -Функция ПолучитьСтрокуДляСтруктуры(Структура,ТаблицаСправочниковДляПолученияМакетовFixtures,ТаблицаКода,ВернутьИмяПеременной = Ложь) - - //Сообщить(" "); - //Сообщить("ОбъектДляХранилищаЗначения = Новый Структура;"); - СчетчикОбъектов = СчетчикОбъектов + 1; - ИмяПеременной = "Структура" + СчетчикОбъектов; - - ДобавитьСтрокуКода(ТаблицаКода," "); - ДобавитьСтрокуКода(ТаблицаКода,ИмяПеременной + " = Новый Структура;"); - - Для каждого Элем Из Структура Цикл - Ключ = Элем.Ключ; - Значение = Элем.Значение; - Если Значение = Неопределено Тогда - //Сообщить("ОбъектДляХранилищаЗначения.Вставить(""" + Ключ + """,Неопределено);"); - ДобавитьСтрокуКода(ТаблицаКода,ИмяПеременной + ".Вставить(""" + Ключ + """,Неопределено);"); - Продолжить; - КонецЕсли; - - СтрокаЗначения = ПолучитьСтрокуДляЗначения(Значение,"",ТаблицаСправочниковДляПолученияМакетовFixtures,ТаблицаКода); - Если СтрокаЗначения = Неопределено Тогда - СтрокаЗначения = "Неопределено"; - КонецЕсли; - //Сообщить("ОбъектДляХранилищаЗначения.Вставить(""" + Ключ + """," + СтрокаЗначения + ");"); - ДобавитьСтрокуКода(ТаблицаКода,ИмяПеременной + ".Вставить(""" + Ключ + """," + СтрокаЗначения + ");"); - КонецЦикла; - - Если ВернутьИмяПеременной Тогда - Возврат ИмяПеременной; - Иначе - ДобавитьСтрокуКода(ТаблицаКода,"ХранилищеЗначения = Новый ХранилищеЗначения(" + ИмяПеременной + ");"); - КонецЕсли; - - Возврат "//Была создана структура"; -КонецФункции - -Функция ПолучитьСтрокуДляСоответствия(Соответствие,ТаблицаСправочниковДляПолученияМакетовFixtures,ТаблицаКода,ВернутьИмяПеременной = Ложь) - - //Сообщить(" "); - //Сообщить("ОбъектДляХранилищаЗначения = Новый Структура;"); - СчетчикОбъектов = СчетчикОбъектов + 1; - ИмяПеременной = "Соответствие" + СчетчикОбъектов; - - ДобавитьСтрокуКода(ТаблицаКода," "); - ДобавитьСтрокуКода(ТаблицаКода,ИмяПеременной + " = Новый Соответствие;"); - - Для каждого Элем Из Соответствие Цикл - Ключ = Элем.Ключ; - Значение = Элем.Значение; - - СтрокаЗначения = ПолучитьСтрокуДляЗначения(Значение,"",ТаблицаСправочниковДляПолученияМакетовFixtures,ТаблицаКода); - СтрокаКлюч = ПолучитьСтрокуДляЗначения(Ключ,"",ТаблицаСправочниковДляПолученияМакетовFixtures,ТаблицаКода); - Если СтрокаЗначения = Неопределено Тогда - СтрокаЗначения = "Неопределено"; - КонецЕсли; - //Сообщить("ОбъектДляХранилищаЗначения.Вставить(""" + Ключ + """," + СтрокаЗначения + ");"); - ДобавитьСтрокуКода(ТаблицаКода,ИмяПеременной + ".Вставить(" + СтрокаКлюч + "," + СтрокаЗначения + ");"); - КонецЦикла; - - Если ВернутьИмяПеременной Тогда - Возврат ИмяПеременной; - Иначе - ДобавитьСтрокуКода(ТаблицаКода,"ХранилищеЗначения = Новый ХранилищеЗначения(" + ИмяПеременной + ");"); - КонецЕсли; - - Возврат "//Была создана структура"; -КонецФункции - -Функция ПолучитьСтрокуДляСпискаЗначений(Спс,ТаблицаСправочниковДляПолученияМакетовFixtures,ТаблицаКода,ВернутьИмяПеременной = Ложь) - - //Сообщить(" "); - //Сообщить("ОбъектДляХранилищаЗначения = Новый Структура;"); - СчетчикОбъектов = СчетчикОбъектов + 1; - ИмяПеременной = "СписокЗначений" + СчетчикОбъектов; - - ДобавитьСтрокуКода(ТаблицаКода," "); - ДобавитьСтрокуКода(ТаблицаКода,ИмяПеременной + " = Новый СписокЗначений;"); - - //Спс = Новый СписокЗначений; - //Спс.Добавить(Справочники.Номенклатура.НайтиПоКоду("00000001728"),"Товар"); - Для каждого Элем Из Спс Цикл - Значение = Элем.Значение; - Представление = Элем.Представление; - Если Значение = Неопределено Тогда - //Сообщить("ОбъектДляХранилищаЗначения.Вставить(""" + Ключ + """,Неопределено);"); - ДобавитьСтрокуКода(ТаблицаКода,ИмяПеременной + ".Добавить(Неопределено,""" + Представление + """);"); - Продолжить; - КонецЕсли; - - СтрокаЗначения = ПолучитьСтрокуДляЗначения(Значение,"",ТаблицаСправочниковДляПолученияМакетовFixtures,ТаблицаКода); - Если СтрокаЗначения = Неопределено Тогда - СтрокаЗначения = "Неопределено"; - КонецЕсли; - Если ЗначениеЗаполнено(Представление) Тогда - ДобавитьСтрокуКода(ТаблицаКода,ИмяПеременной + ".Добавить(" + СтрокаЗначения + ",""" + Представление + """);"); - Иначе - ДобавитьСтрокуКода(ТаблицаКода,ИмяПеременной + ".Добавить(" + СтрокаЗначения + ");"); - КонецЕсли; - КонецЦикла; - - Если ВернутьИмяПеременной Тогда - Возврат ИмяПеременной; - Иначе - ДобавитьСтрокуКода(ТаблицаКода,"ХранилищеЗначения = Новый ХранилищеЗначения(" + ИмяПеременной + ");"); - КонецЕсли; - Возврат "//Была создана структура"; -КонецФункции - -Функция ПолучитьСтрокуДляТаблицыЗначений(Тзн,ТаблицаСправочниковДляПолученияМакетовFixtures,ТаблицаКода,ВернутьИмяПеременной = Ложь) - - //Сообщить(" "); - //Сообщить("ОбъектДляХранилищаЗначения = Новый Структура;"); - СчетчикОбъектов = СчетчикОбъектов + 1; - ЗначениеСчетчика = СчетчикОбъектов; - ИмяПеременной = "ТаблицаЗначений" + СчетчикОбъектов; - - ДобавитьСтрокуКода(ТаблицаКода," "); - ДобавитьСтрокуКода(ТаблицаКода,ИмяПеременной + " = Новый ТаблицаЗначений;"); - - //Спс = Новый СписокЗначений; - //Спс.Добавить(Справочники.Номенклатура.НайтиПоКоду("00000001728"),"Товар"); - - Для каждого Колонка Из Тзн.Колонки Цикл - ДобавитьСтрокуКода(ТаблицаКода,ИмяПеременной + ".Колонки.Добавить(""" + Колонка.Имя + """);"); - КонецЦикла; - - Ном = 0; - Для каждого СтрокаТаблицы Из Тзн Цикл - Ном = Ном + 1; - ДобавитьСтрокуКода(ТаблицаКода,"//Строка №" + Ном); - ИдСтрокиТаблицы = "СтрокаТаблицы_" + ЗначениеСчетчика; - ДобавитьСтрокуКода(ТаблицаКода,ИдСтрокиТаблицы + " = " + ИмяПеременной + ".Добавить();"); - Для каждого Колонка Из Тзн.Колонки Цикл - ЗначениеИзТаблицы = СтрокаТаблицы[Колонка.Имя]; - Если ЗначениеИзТаблицы = Неопределено Тогда - //Сообщить("ОбъектДляХранилищаЗначения.Вставить(""" + Ключ + """,Неопределено);"); - ДобавитьСтрокуКода(ТаблицаКода,ИдСтрокиТаблицы + "." + Колонка.Имя + "=" + "Неопределено" + ";"); - Продолжить; - КонецЕсли; - - - СтрокаЗначения = ПолучитьСтрокуДляЗначения(ЗначениеИзТаблицы,"",ТаблицаСправочниковДляПолученияМакетовFixtures,ТаблицаКода); - Если СтрокаЗначения = Неопределено Тогда - СтрокаЗначения = "Неопределено"; - КонецЕсли; - ДобавитьСтрокуКода(ТаблицаКода,ИдСтрокиТаблицы + "." + Колонка.Имя + "=" + СтрокаЗначения + ";"); - КонецЦикла; - КонецЦикла; - - Если ВернутьИмяПеременной Тогда - Возврат ИмяПеременной; - Иначе - ДобавитьСтрокуКода(ТаблицаКода,"ХранилищеЗначения = Новый ХранилищеЗначения(" + ИмяПеременной + ");"); - КонецЕсли; - - Возврат "//Была создана структура"; -КонецФункции - -Функция ПолучитьДатуСтрокой(Дат) - Возврат "'" + Формат(Дат,"ДФ=yyyyMMdd") + Формат(Дат,"ДФ=HHmmss") + "'"; -КонецФункции - -Процедура ДобавитьОбъектВТаблицу(ТаблицаОбъектов,Объект,Тип,Вид) - Если Не ЗначениеЗаполнено(Объект) Тогда - Возврат; - КонецЕсли; - - СтрТаблицаОбъектов = ТаблицаОбъектов.Добавить(); - СтрТаблицаОбъектов.Объект = Объект; - СтрТаблицаОбъектов.Тип = Тип; - СтрТаблицаОбъектов.Вид = Вид; -КонецПроцедуры - -Функция ПолучитьСтрокуДляЗначения(Значение,ИмяКонстанты = "",ТаблицаСправочников,ТаблицаКода); - ТипЗначения = ТипЗнч(Значение); - - Если ТипЗначения = Тип("Строка") Тогда - //СтрЧислоСтрок - //СтрПолучитьСтроку - - ПромСтр = СтрЗаменить(Значение,"""",""""""); - ЧислоСтрокВСтроке = СтрЧислоСтрок(ПромСтр); - Если ЧислоСтрокВСтроке = 1 Тогда - Возврат """" + ПромСтр + """"; - Иначе - СтрокаРезультат = """" + СтрПолучитьСтроку(ПромСтр,1); - Для Ккк = 2 По ЧислоСтрокВСтроке Цикл - СтрокаРезультат = СтрокаРезультат + Символы.ПС; - СтрокаРезультат = СтрокаРезультат + Символы.Таб + "|" + СтрПолучитьСтроку(ПромСтр,Ккк); - Если Ккк = ЧислоСтрокВСтроке Тогда - СтрокаРезультат = СтрокаРезультат + """"; - КонецЕсли; - КонецЦикла; - - Возврат СтрокаРезультат; - //Сообщить("Стр = """ + СтрПолучитьСтроку(ПромСтр,1)); - //ДобавитьСтрокуКода(ТаблицаКода,"Стр = """ + СтрПолучитьСтроку(ПромСтр,1)); - //Для Ккк=2 По ЧислоСтрокВСтроке Цикл - // Если Ккк = ЧислоСтрокВСтроке Тогда - // //Сообщить("|" + СтрПолучитьСтроку(ПромСтр,Ккк) + """;"); - // ДобавитьСтрокуКода(ТаблицаКода,"|" + СтрПолучитьСтроку(ПромСтр,Ккк) + """;"); - // иначе - // //Сообщить("|" + СтрПолучитьСтроку(ПромСтр,Ккк)); - // ДобавитьСтрокуКода(ТаблицаКода,"|" + СтрПолучитьСтроку(ПромСтр,Ккк)); - // КонецЕсли; - //КонецЦикла; - //Если ИмяКонстанты <> "" Тогда - // ДобавитьСтрокуКода(ТаблицаКода,"Константы." + ИмяКонстанты + ".Установить(" + "Стр" + ");"); - //КонецЕсли; - КонецЕсли; - - //Возврат "ОбработкаВнутриАлгоритма"; - - ИначеЕсли ТипЗначения = Тип("Число") Тогда - Возврат СтрЗаменить(СтрЗаменить(Значение,",","."),Символы.НПП,""); - - ИначеЕсли ТипЗначения = Тип("Булево") Тогда - Если Значение Тогда - Возврат "Истина"; - Иначе - Возврат "Ложь"; - КонецЕсли; - ИначеЕсли ТипЗначения = Тип("Дата") Тогда - //Возврат "'" + Формат(Значение,"ДФ=yyyyMMdd") + Формат(Значение,"ДФ=HHmmss") + "'"; - Возврат ПолучитьДатуСтрокой(Значение); - - ИначеЕсли Справочники.ТипВсеСсылки().СодержитТип(ТипЗначения) Тогда - ИмяМетаданного = Значение.Метаданные().Имя; - ДлинаКода = Значение.Метаданные().ДлинаКода; - ДлинаНаименования = Значение.Метаданные().ДлинаНаименования; - - ДобавитьОбъектВТаблицу(ТаблицаСправочников,Значение,"Справочник",ИмяМетаданного); - - Если ДлинаКода > 0 Тогда - Если Значение.Метаданные().ТипКода = Метаданные.СвойстваОбъектов.ТипКодаСправочника.Число Тогда - Возврат "ПолучитьСправочникПоРеквизиту(""" + ИмяМетаданного + """,""Код""," + СтрЗаменить(СокрЛП(Значение.Код),Символы.НПП,"") + ")"; - Иначе - Возврат "ПолучитьСправочникПоРеквизиту(""" + ИмяМетаданного + """,""Код"",""" + СокрЛП(Значение.Код) + """)"; - КонецЕсли; - ИначеЕсли ДлинаНаименования > 0 Тогда - Возврат "ПолучитьСправочникПоРеквизиту(""" + ИмяМетаданного + """,""Наименование"",""" + СокрЛП(Значение.Наименование) + """)"; - Иначе - Возврат Неопределено; - //Сообщить("//Константа " + Имя + ". Не смог определить как заплонять значение."); - КонецЕсли; - ИначеЕсли Документы.ТипВсеСсылки().СодержитТип(ТипЗначения) Тогда - ИмяМетаданного = Значение.Метаданные().Имя; - ТипНомера = Значение.Метаданные().ТипНомера; - ДлинаНомера = Значение.Метаданные().ДлинаНомера; - Если ДлинаНомера > 0 Тогда - Если Значение.Метаданные().ТипНомера = Метаданные.СвойстваОбъектов.ТипНомераДокумента.Число Тогда - Возврат "ПолучитьДокументПоНомеру(""" + ИмяМетаданного + """," + СтрЗаменить(СокрЛП(Значение.Номер),Символы.НПП,"") + "," + ПолучитьДатуСтрокой(Значение.Дата) + ")"; - Иначе - Возврат "ПолучитьДокументПоНомеру(""" + ИмяМетаданного + """,""" + СокрЛП(Значение.Номер) + """," + ПолучитьДатуСтрокой(Значение.Дата) + ")"; - КонецЕсли; - Иначе - Возврат "ПолучитьДокументПоНомеру(""" + ИмяМетаданного + """,""" + "" + """," + ПолучитьДатуСтрокой(Значение.Дата) + ")"; - //Сообщить("//Константа " + Имя + ". Не смог определить как заплонять значение."); - КонецЕсли; - ИначеЕсли Перечисления.ТипВсеСсылки().СодержитТип(ТипЗначения) Тогда - ИмяМетаданного = Значение.Метаданные().Имя; - ИндексЗначенияПеречисления = Перечисления[ИмяМетаданного].Индекс(Значение); - ИмяЗначенияПеречисления = Метаданные.Перечисления[ИмяМетаданного].ЗначенияПеречисления[ИндексЗначенияПеречисления].Имя; - - Возврат "Перечисления." + ИмяМетаданного + "." + ИмяЗначенияПеречисления; - ИначеЕсли ТипЗначения = Тип("ХранилищеЗначения") Тогда - ЗначениеИзХранилища = Значение.Получить(); - Если ЗначениеИзХранилища = Неопределено Тогда - Возврат Неопределено; - КонецЕсли; - - ТипЗначенияИзХранилища = ТипЗнч(ЗначениеИзХранилища); - Если ТипЗначенияИзХранилища = Тип("Структура") Тогда - Если ЗначениеИзХранилища.Количество() = 0 Тогда - Возврат Неопределено; - КонецЕсли; - Возврат ПолучитьСтрокуДляСтруктуры(ЗначениеИзХранилища,ТаблицаСправочников,ТаблицаКода); - ИначеЕсли ТипЗначенияИзХранилища = Тип("СписокЗначений") Тогда - Если ЗначениеИзХранилища.Количество() = 0 Тогда - Возврат Неопределено; - КонецЕсли; - Возврат ПолучитьСтрокуДляСпискаЗначений(ЗначениеИзХранилища,ТаблицаСправочников,ТаблицаКода); - ИначеЕсли ТипЗначенияИзХранилища = Тип("ТаблицаЗначений") Тогда - Если ЗначениеИзХранилища.Количество() = 0 Тогда - Возврат Неопределено; - КонецЕсли; - Возврат ПолучитьСтрокуДляТаблицыЗначений(ЗначениеИзХранилища,ТаблицаСправочников,ТаблицаКода); - ИначеЕсли ТипЗначенияИзХранилища = Тип("Соответствие") Тогда - Если ЗначениеИзХранилища.Количество() = 0 Тогда - Возврат Неопределено; - КонецЕсли; - Возврат ПолучитьСтрокуДляСоответствия(ЗначениеИзХранилища,ТаблицаСправочников,ТаблицаКода); - КонецЕсли; - - //Сообщить("ХранилищеЗначения"); - //ПолучитьСтрокуКодаДляЗначения(ЗначениеИзХранилища,Имя) - Если ИмяКонстанты <> "" Тогда - //Сообщить("//Здесь надо заполнить константу " + ИмяКонстанты + " в которой хранилище значения. ТипЗначенияИзХранилища="+ТипЗначенияИзХранилища); - ДобавитьСтрокуКода(ТаблицаКода,"//Здесь надо заполнить константу " + ИмяКонстанты + " в которой хранилище значения. ТипЗначенияИзХранилища="+ТипЗначенияИзХранилища); - КонецЕсли; - Возврат Неопределено; - - - ИначеЕсли ТипЗначения = Тип("Структура") Тогда - Возврат ПолучитьСтрокуДляСтруктуры(Значение,ТаблицаСправочников,ТаблицаКода,Истина); - ИначеЕсли ТипЗначения = Тип("СписокЗначений") Тогда - Возврат ПолучитьСтрокуДляСпискаЗначений(Значение,ТаблицаСправочников,ТаблицаКода,Истина); - ИначеЕсли ТипЗначения = Тип("Соответствие") Тогда - Возврат ПолучитьСтрокуДляСоответствия(Значение,ТаблицаСправочников,ТаблицаКода,Истина); - ИначеЕсли ТипЗначения = Тип("ТаблицаЗначений") Тогда - Возврат ПолучитьСтрокуДляТаблицыЗначений(Значение,ТаблицаСправочников,ТаблицаКода,Истина); - Иначе - //Сообщить("//Здесь надо установить значение для константы """ + Имя + """. ТипЗначения="+ТипЗначения); - Если ИмяКонстанты = "" Тогда //значит это подчиненное значение, которое имеет сложный тип, например в таблце значений внутри были структуры - - КонецЕсли; - Возврат Неопределено; - КонецЕсли; -КонецФункции - -Процедура ДобавитьСтрокуКода(ТаблицаКода,Стр,ДобавитьТаб = Истина) - СтрТаблицаКода = ТаблицаКода.Добавить(); - Если ДобавитьТаб Тогда - СтрТаблицаКода.СтрокаКода = Символы.Таб + Стр; - Иначе - СтрТаблицаКода.СтрокаКода = Стр; - КонецЕсли; -КонецПроцедуры - - -Процедура ПолучитьСтрокуКодаДляЗначения(Значение,Имя,ТаблицаСправочниковДляПолученияМакетовFixtures,ТаблицаКода) - ТипЗначения = ТипЗнч(Значение); - - - СтрокаДляЗначения = ПолучитьСтрокуДляЗначения(Значение,Имя,ТаблицаСправочниковДляПолученияМакетовFixtures,ТаблицаКода); - Если СтрокаДляЗначения = Неопределено Тогда - //ДобавитьСтрокуКода(ТаблицаКода,); - //Сообщить("//Здесь надо установить значение для константы """ + Имя + """. ТипЗначения="+ТипЗначения); - ДобавитьСтрокуКода(ТаблицаКода,"//Здесь надо установить значение для константы """ + Имя + """. ТипЗначения="+ТипЗначения); - ИначеЕсли ТипЗначения = Тип("ХранилищеЗначения") Тогда - //Сообщить("Константы." + Имя + ".Установить(" + "ОбъектДляХранилищаЗначения" + ");"); - //Сообщить(" "); - ДобавитьСтрокуКода(ТаблицаКода,"Константы." + Имя + ".Установить(" + "ХранилищеЗначения" + ");"); - ДобавитьСтрокуКода(ТаблицаКода," "); - ИначеЕсли СтрокаДляЗначения = "ОбработкаВнутриАлгоритма" тогда - //значит уже всё сделано - Иначе - //Сообщить("Константы." + Имя + ".Установить(" + СтрокаДляЗначения + ");"); - //Сообщить(" "); - ДобавитьСтрокуКода(ТаблицаКода,"Константы." + Имя + ".Установить(" + СтрокаДляЗначения + ");"); - ДобавитьСтрокуКода(ТаблицаКода," "); - КонецЕсли; - - //Если ТипЗначения = Тип("Строка") Тогда - // Сообщить("Константы." + Имя + ".Установить(""" + Значение + """);"); - //ИначеЕсли ТипЗначения = Тип("Число") Тогда - // Сообщить("Константы." + Имя + ".Установить(" + СтрЗаменить(Значение,",",".") + ");"); - //ИначеЕсли ТипЗначения = Тип("Булево") Тогда - // Если Значение Тогда - // Сообщить("Константы." + Имя + ".Установить(" + "Истина" + ");"); - // Иначе - // Сообщить("Константы." + Имя + ".Установить(" + "Ложь" + ");"); - // КонецЕсли; - //ИначеЕсли ТипЗначения = Тип("Дата") Тогда - // Сообщить("Константы." + Имя + ".Установить('" + Формат(Значение,"ДФ=yyyyMMdd") + Формат(Значение,"ДФ=HHmmss") + "');"); - //ИначеЕсли Справочники.ТипВсеСсылки().СодержитТип(ТипЗначения) Тогда - // ИмяМетаданного = Значение.Метаданные().Имя; - // ДлинаКода = Значение.Метаданные().ДлинаКода; - // ДлинаНаименования = Значение.Метаданные().ДлинаНаименования; - // Если ДлинаКода > 0 Тогда - // Если Значение.Метаданные().ТипКода = Метаданные.СвойстваОбъектов.ТипКодаСправочника.Число Тогда - // Сообщить("Константы." + Имя + ".Установить(ПолучитьСправочникПоРеквизиту(""" + ИмяМетаданного + """,""Код""," + Значение.Код + "));"); - // Иначе - // Сообщить("Константы." + Имя + ".Установить(ПолучитьСправочникПоРеквизиту(""" + ИмяМетаданного + """,""Код"",""" + Значение.Код + """));"); - // КонецЕсли; - // ИначеЕсли ДлинаНаименования > 0 Тогда - // Сообщить("Константы." + Имя + ".Установить(ПолучитьСправочникПоРеквизиту(""" + ИмяМетаданного + """,""Наименование"",""" + Значение.Наименование + """));"); - // Иначе - // Сообщить("//Константа " + Имя + ". Не смог определить как заплонять значение."); - // КонецЕсли; - //ИначеЕсли Перечисления.ТипВсеСсылки().СодержитТип(ТипЗначения) Тогда - // ИмяМетаданного = Значение.Метаданные().Имя; - // ИндексЗначенияПеречисления = Перечисления[ИмяМетаданного].Индекс(Значение); - // ИмяЗначенияПеречисления = Метаданные.Перечисления[ИмяМетаданного].ЗначенияПеречисления[ИндексЗначенияПеречисления].Имя; - // Сообщить("Константы." + Имя + ".Установить(Перечисления." + ИмяМетаданного + "." + ИмяЗначенияПеречисления + ");"); - //ИначеЕсли ТипЗначения = Тип("ХранилищеЗначения") Тогда - // ЗначениеИзХранилища = Значение.Получить(); - // Если ЗначениеИзХранилища = Неопределено Тогда - // Сообщить("//Константа " + Имя + " была не заполнена."); - // Возврат; - // КонецЕсли; - // - // Сообщить("ХранилищеЗначения"); - // ПолучитьСтрокуКодаДляЗначения(ЗначениеИзХранилища,Имя) - //Иначе - // Сообщить("//Здесь надо установить значение для константы """ + Имя + """. ТипЗначения="+ТипЗначения); - //КонецЕсли; -КонецПроцедуры - -Процедура СгенерироватьКодДляЗаполненияКонстант(ТаблицаКода,ТаблицаСправочниковДляПолученияМакетовFixtures) - МассивКонстантДляОбработки = ПолучитьМассивКонстантДляОбработки(); - //Сообщить("//код для вставки"); - ДобавитьСтрокуКода(ТаблицаКода,"Процедура ЗаполнениеКонстант() Экспорт",Ложь); - ДобавитьСтрокуКода(ТаблицаКода,"Сообщить(""Устанавливаю значения констант"");"); - Для каждого Элем Из МассивКонстантДляОбработки Цикл - ОбработкаПрерыванияПользователя(); - - Имя = Элем; - - Состояние("Константы." + Имя); - - Значение = Константы[Имя].Получить(); - Если НЕ ЗначениеЗаполнено(Значение) Тогда - Сообщить("//Константа " + Имя + " была не заполнена."); - ДобавитьСтрокуКода(ТаблицаКода,"//Константа " + Имя + " была не заполнена."); - Продолжить; - КонецЕсли; - - - ТипЗначения = ТипЗнч(Значение); - Если ТипЗначения = Тип("ХранилищеЗначения") Тогда - ЗначениеИзХранилища = Значение.Получить(); - Если ЗначениеИзХранилища = Неопределено Тогда - Сообщить("//Константа " + Имя + " была не заполнена."); - ДобавитьСтрокуКода(ТаблицаКода,"//Константа " + Имя + " была не заполнена."); - Продолжить; - КонецЕсли; - КонецЕсли; - - ПолучитьСтрокуКодаДляЗначения(Значение,Имя,ТаблицаСправочниковДляПолученияМакетовFixtures,ТаблицаКода); - - Если ТестовыйРежим Тогда - Сообщить("ВКЛЮЧЕН ТЕСТОВЫЙ РЕЖИМ!!! ВЫГРУЖЕНЫ НЕ ВСЕ КОНСТАНТЫ!"); - Прервать; - КонецЕсли; - - //Сообщить("ПОТОМ УБРАТЬ!!! В СгенерироватьКодДляЗаполненияКонстант"); - //Прервать; - КонецЦикла; - ДобавитьСтрокуКода(ТаблицаКода,"КонецПроцедуры",Ложь); -КонецПроцедуры - -Процедура СгенерироватьКодДляСозданияFixturesСправочниковПоМакетам(ТаблицаКода,МассивМакетовСправочниковДляВставки) - ДобавитьСтрокуКода(ТаблицаКода," ",Ложь); - ДобавитьСтрокуКода(ТаблицаКода,"Процедура СоздатьFixturesСправочниковПоМакетам() Экспорт",Ложь); - Для каждого Элем Из МассивМакетовСправочниковДляВставки Цикл - ДобавитьСтрокуКода(ТаблицаКода,"СоздатьFixturesПоМакету(""" + Элем.ИмяМакета + """); //Загружено элементов " + Элем.ПолученоЭлементов); - КонецЦикла; - ДобавитьСтрокуКода(ТаблицаКода,"КонецПроцедуры",Ложь); -КонецПроцедуры - -Процедура СгенерироватьКодДляСозданияFixturesРСПоМакетам(ТаблицаКода,МассивМакетовРСДляВставки) - ДобавитьСтрокуКода(ТаблицаКода," ",Ложь); - ДобавитьСтрокуКода(ТаблицаКода,"Процедура СоздатьFixturesРСПоМакетам() Экспорт",Ложь); - Для каждого Элем Из МассивМакетовРСДляВставки Цикл - ДобавитьСтрокуКода(ТаблицаКода,"СоздатьFixturesПоМакету(""" + Элем.ИмяМакета + """);"); - КонецЦикла; - ДобавитьСтрокуКода(ТаблицаКода,"КонецПроцедуры",Ложь); -КонецПроцедуры - -Процедура СгенерироватьКодСОсновнымиПроцедурами(ТаблицаКода) - ДобавитьСтрокуКода(ТаблицаКода," ",Ложь); - ДобавитьСтрокуКода(ТаблицаКода,"Процедура СделатьНачальноеЗаполнениеБазы() Экспорт",Ложь); - ДобавитьСтрокуКода(ТаблицаКода,"Сообщить(""Начало обработки:"" + ТекущаяДата());"); - ДобавитьСтрокуКода(ТаблицаКода,"СоздатьFixturesСправочниковПоМакетам();"); - ДобавитьСтрокуКода(ТаблицаКода,"ЗаполнениеКонстант();"); - ДобавитьСтрокуКода(ТаблицаКода,"СоздатьFixturesРСПоМакетам();"); - ДобавитьСтрокуКода(ТаблицаКода,"Сообщить(""Окончание обработки:"" + ТекущаяДата());"); - ДобавитьСтрокуКода(ТаблицаКода,"КонецПроцедуры",Ложь); -КонецПроцедуры - -Процедура ДобавитьСправочникВВыгрузку(ТаблицаОбъектов,ИмяСпр,СколькоВыгружать,ПорогДляПолннойВыгрузки) - Запрос = Новый Запрос; - Запрос.Текст = - "ВЫБРАТЬ - | КОЛИЧЕСТВО(__ИмяСпр__.Ссылка) КАК КолЭлементов - |ИЗ - | Справочник.__ИмяСпр__ КАК __ИмяСпр__"; - - Запрос.Текст = СтрЗаменить(Запрос.Текст,"__ИмяСпр__",ИмяСпр); - РезультатЗапроса = Запрос.Выполнить(); - - ВыборкаДетальныеЗаписи = РезультатЗапроса.Выбрать(); - - КолЭлементовВсего = 0; - Пока ВыборкаДетальныеЗаписи.Следующий() Цикл - КолЭлементовВсего = ВыборкаДетальныеЗаписи.КолЭлементов; - КонецЦикла; - - СколькоБудемВыгружать = СколькоВыгружать; - Если КолЭлементовВсего <= ПорогДляПолннойВыгрузки Тогда - СколькоБудемВыгружать = КолЭлементовВсего; - КонецЕсли; - - - Сообщить("Добавляю в выгрузку справочник: " + ИмяСпр + ". Всего элементов " + КолЭлементовВсего + ". Выгружаю " + СколькоБудемВыгружать + " элементов."); - - - - Запрос = Новый Запрос; - Запрос.Текст = - "ВЫБРАТЬ ПЕРВЫЕ МаксЧислоЭлементов - | __ИмяСпр__.Ссылка КАК Ссылка - |ИЗ - | Справочник.__ИмяСпр__ КАК __ИмяСпр__ - | ГДЕ НЕ ПометкаУдаления И НЕ Предопределенный - |"; - - Запрос.Текст = СтрЗаменить(Запрос.Текст,"__ИмяСпр__",ИмяСпр); - Запрос.Текст = СтрЗаменить(Запрос.Текст,"МаксЧислоЭлементов",СтрЗаменить(СколькоБудемВыгружать,Символы.НПП,"")); - РезультатЗапроса = Запрос.Выполнить(); - - - ВыборкаДетальныеЗаписи = РезультатЗапроса.Выбрать(); - Пока ВыборкаДетальныеЗаписи.Следующий() Цикл - СтрТаблицаОбъектов = ТаблицаОбъектов.Добавить(); - СтрТаблицаОбъектов.Объект = ВыборкаДетальныеЗаписи.Ссылка; - СтрТаблицаОбъектов.Тип = "Справочник"; - СтрТаблицаОбъектов.Вид = ИмяСпр; - КонецЦикла; -КонецПроцедуры - -Процедура ДобавитьВВыгрузкуСправочники(ТаблицаОбъектов) - Для каждого Элем Из Метаданные.Справочники Цикл - ЭлементСписка = СписокВидовСправочниковКоторыеНеНадоВыгружать.НайтиПоЗначению(Элем.Имя); - Если ЭлементСписка <> Неопределено Тогда - Сообщить("Справочник " + Элем.Имя + " не будет выгружен, т.к. он добавлен в список невыгружаемых объектов."); - Продолжить; - КонецЕсли; - - Если ТестовыйРежим Тогда - Сообщить("ВКЛЮЧЕН ТЕСТОВЫЙ РЕЖИМ!!! ВЫГРУЖЕНЫ НЕ ВСЕ СПРАВОЧНИКИ!"); - Прервать; - КонецЕсли; - - //Сообщить("Добавляю в выгрузку справочник: " + Элем.Имя); - ДобавитьСправочникВВыгрузку(ТаблицаОбъектов,Элем.Имя,СколькоВыгружатьЭлементаСправочника,ПорогДляПолннойВыгрузкиСправочника); - КонецЦикла; - - //ПорогДляПолннойВыгрузкиСправочника -КонецПроцедуры - -Процедура ПолучитьОтчетПоМакетам(МассивМакетовСправочниковДляВставки,КоментарийОтчета) - ТаблицаОтчетПоМакетам = Новый ТаблицаЗначений; - ТаблицаОтчетПоМакетам.Колонки.Добавить("ИмяМакета"); - ТаблицаОтчетПоМакетам.Колонки.Добавить("КолСтрок"); - Для каждого Элем Из МассивМакетовСправочниковДляВставки Цикл - Макет = Элем.Макет; - КолСтрок = Макет.ВысотаТаблицы; - - - СтрТаблицаОтчетПоМакетам = ТаблицаОтчетПоМакетам.Добавить(); - СтрТаблицаОтчетПоМакетам.ИмяМакета = Элем.ИмяМакета; - СтрТаблицаОтчетПоМакетам.КолСтрок = КолСтрок; - КонецЦикла; - - ТаблицаОтчетПоМакетам.Сортировать("КолСтрок убыв,ИмяМакета"); - //ТаблицаОтчетПоМакетам.ВыбратьСтроку(); - - - ПечДок = Новый ТабличныйДокумент; - МакетОтчетПоМакетам = ПолучитьМакет("ОтчетПоМакетам"); - - ОбластьШапка = МакетОтчетПоМакетам.ПолучитьОбласть("Шапка"); - ОбластьСтрока = МакетОтчетПоМакетам.ПолучитьОбласть("Строка"); - - ПечДок.Вывести(ОбластьШапка); - - Для каждого СтрТаблицаОтчетПоМакетам Из ТаблицаОтчетПоМакетам Цикл - ОбластьСтрока.Параметры.Заполнить(СтрТаблицаОтчетПоМакетам); - ПечДок.Вывести(ОбластьСтрока); - КонецЦикла; - - ПечДок.Показать("Отчет по сгенерированным макетам. " + КоментарийОтчета + "."); -КонецПроцедуры - -Функция ПолучитьКоличествоЗаписейВРС(ИмяРС) - Запрос = Новый Запрос; - Запрос.Текст = - "ВЫБРАТЬ - | КОЛИЧЕСТВО(*) КАК КолЗаписей - |ИЗ - | РегистрСведений.__РС__ КАК __РС__"; - - Запрос.Текст = СтрЗаменить(Запрос.Текст,"__РС__",ИмяРС); - РезультатЗапроса = Запрос.Выполнить(); - ВыборкаДетальныеЗаписи = РезультатЗапроса.Выбрать(); - - Пока ВыборкаДетальныеЗаписи.Следующий() Цикл - Возврат ВыборкаДетальныеЗаписи.КолЗаписей; - КонецЦикла; - - Возврат 0; -КонецФункции - -Функция ПолучитьМакетДляВидаРС(Вид,ИмяМакета) - - ГенераторFixtures = ВнешниеОбработки.Создать(ПутьКГенераторуFixtures); - ФормаГенератора = ГенераторFixtures.ПолучитьФорму("Форма"); - ФормаГенератора.Открыть(); - ГенераторFixtures.ВыгружатьКод = Истина; - ГенераторFixtures.ОбменДанными = Истина; - - ДеревоМетаданных = ГенераторFixtures.ДеревоМетаданных; - //ДеревоМетаданных.ВыбратьСтроку(); - - ВеткаДерева = ДеревоМетаданных.Строки[0].Строки[2]; - //Для каждого СтрокаДерева Из ВеткаСправочников.Строки Цикл - // Сообщить("" + СтрокаДерева.ПолноеИмяМетаданных); - //КонецЦикла; - НужнаяСтрокаДерева = ВеткаДерева.Строки.Найти(Вид,"ПолноеИмяМетаданных"); - Если НужнаяСтрокаДерева = Неопределено Тогда - Сообщить("Не найдена строка РС в дереве. Вид="+вид); - Возврат Неопределено; - КонецЕсли; - - - НужнаяСтрокаДерева.Выгружать = Истина; - НужнаяСтрокаДерева.ИспользоватьОтбор = Истина; - - - - ФормаГенератора.ЭлементыФормы.ДеревоМетаданных.ТекущаяСтрока = НужнаяСтрокаДерева; - //ФормаГенератора.ДеревоМетаданныхПриАктивизацииСтроки(""); - - - Макет = Новый ТабличныйДокумент; - Макет.Прочитать(ПутьУПустомуПравильномуМакету); - ГенераторFixtures.СоздатьМакетДанныхПоМетаданным(Макет); - - ИмяМакета = "РС_" + Вид; - Макет.Показать(ИмяМакета); - - ФормаГенератора.Закрыть(); - ГенераторFixtures = Неопределено; - - Сообщить("Получено " + Макет.ВысотаТаблицы + " строк."); - - Возврат Макет; - -КонецФункции - -Процедура ПолучитьFixturesДляРС(МассивМакетовРСДляВставки) - Для каждого Элем Из Метаданные.РегистрыСведений Цикл - Имя = Элем.Имя; - Если Элем.РежимЗаписи <> Метаданные.СвойстваОбъектов.РежимЗаписиРегистра.Независимый Тогда - Продолжить; - КонецЕсли; - - ЭлементСписка = СписокВидовРСоторыеНеНадоВыгружать.НайтиПоЗначению(Имя); - Если ЭлементСписка <> Неопределено Тогда - Сообщить("РС " + Имя + " не будет выгружен, т.к. он добавлен в список невыгружаемых объектов."); - Продолжить; - КонецЕсли; - - Состояние("РС " + Имя); - - - Если Элем.Измерения.Количество() = 0 Тогда //такие РС xddDataFixtureGen не переваривает, хотя в типовых они встречаются - Сообщить("Не стал выгружать РС " + Имя + ", т.к. у него 0 измерений."); - Продолжить; - КонецЕсли; - - КоличествоЗаписейВРС = ПолучитьКоличествоЗаписейВРС(Имя); - Если КоличествоЗаписейВРС > ПорогДляПолннойВыгрузкиРС Тогда - Продолжить; - КонецЕсли; - Если КоличествоЗаписейВРС = 0 Тогда - Продолжить; - КонецЕсли; - - Сообщить("Выгружаю РС " + Имя + ", КоличествоЗаписей="+КоличествоЗаписейВРС); - - - ИмяМакета = ""; - Макет = ПолучитьМакетДляВидаРС(Имя,ИмяМакета); - //Сообщить("Получено " + Макет.ВысотаТаблицы + " строк."); - - - СтруктураМакета = Новый Структура; - СтруктураМакета.Вставить("Макет",Макет); - СтруктураМакета.Вставить("ИмяМакета",ИмяМакета); - - МассивМакетовРСДляВставки.Добавить(СтруктураМакета); - - - - Если ТестовыйРежим Тогда - Сообщить("ВКЛЮЧЕН ТЕСТОВЫЙ РЕЖИМ!!! ВЫГРУЖЕНЫ НЕ ВСЕ РС!"); - Прервать; - КонецЕсли; - //Сообщить("ПОТОМ УБРАТЬ!!!!!!!!!!!!!!!!!"); - //Прервать; - КонецЦикла; -КонецПроцедуры - -Процедура кнГенерацияДанных(Элемент) - Сообщить("НАЧАЛО ОБРАБОТКИ " + ТекущаяДата()); - СчетчикОбъектов = 0; - - ФайлМакета = Новый Файл(ПутьУПустомуПравильномуМакету); - Если Не ФайлМакета.Существует() Тогда - Сообщить("Файл макета " + ПутьУПустомуПравильномуМакету + " не найден!"); - Возврат; - КонецЕсли; - - ТаблицаСправочниковДляПолученияМакетовFixtures = Новый ТаблицаЗначений; - ТаблицаСправочниковДляПолученияМакетовFixtures.Колонки.Добавить("Объект"); - ТаблицаСправочниковДляПолученияМакетовFixtures.Колонки.Добавить("Тип"); - ТаблицаСправочниковДляПолученияМакетовFixtures.Колонки.Добавить("Вид"); - - ТаблицаКода = Новый ТаблицаЗначений; - ТаблицаКода.Колонки.Добавить("СтрокаКода"); - - //ГЕНЕРАЦИЯ КОДА ДЛЯ ЗАПОЛНЕНИЯ КОНСТАНТ - //Сообщить("ПОТОМ ВЕРНУТЬ!!! СгенерироватьКодДляЗаполненияКонстант"); - Если флагВыгружатьКонстанты Тогда - СгенерироватьКодДляЗаполненияКонстант(ТаблицаКода,ТаблицаСправочниковДляПолученияМакетовFixtures); - КонецЕсли; - - - - Если флагВыгружатьСправочники Тогда - ДобавитьВВыгрузкуСправочники(ТаблицаСправочниковДляПолученияМакетовFixtures); - КонецЕсли; - - //Сообщить("ПОТОМ ВЕРНУТЬ!!! ДобавитьВВыгрузкуСправочники"); - - - - - - - //ГЕНЕРАЦИЯ МАКЕТОВ - - ТаблицаСправочниковДляПолученияМакетовFixtures.Свернуть("Объект,Тип,Вид"); - ТаблицаСправочниковДляПолученияМакетовFixtures.Сортировать("Вид,Объект"); - - - //ТаблицаСправочниковДляПолученияМакетовFixtures.ВыбратьСтроку(); - Сообщить(" "); - - - МассивМакетовСправочниковДляВставки = Новый Массив; - //ДобавитьМассивмакетовОВОбработку(МассивМакетовСправочниковДляВставки,ПутьКОбработке); - - - //ГЕНЕРАЦИЯ FIXTURES ДЛЯ СПРАВОЧНИКОВ, КОТОРЫЕ БЫЛИ ПОЛУЧЕНЫ ОТ КОНСТАНТ И ПРОСТО СПРАВОЧНИКОВ - //Сообщить("ПОТОМ ВЕРНУТЬ!!! ПолучитьFixturesДляСправочников()"); - ПолучитьFixturesДляСправочников(ТаблицаСправочниковДляПолученияМакетовFixtures,МассивМакетовСправочниковДляВставки); - - - - - //ГЕНЕРАЦИЯ FIXTURES ДЛЯ РЕГИСТРОВ СВЕДЕНИЙ - МассивМакетовРСДляВставки = Новый Массив; - Если флагВыгружатьРС Тогда - ПолучитьFixturesДляРС(МассивМакетовРСДляВставки); - КонецЕсли; - - - - - - ПолучитьОтчетПоМакетам(МассивМакетовСправочниковДляВставки,"Справочники"); - ПолучитьОтчетПоМакетам(МассивМакетовРСДляВставки,"РС"); - - ПутьКОбработке = ПутьКШаблонуОбработки; - - - - - //ГЕНЕРАЦИЯ КОДА ДЛЯ СОЗДАНИЯ FIXTURES - СгенерироватьКодДляСозданияFixturesСправочниковПоМакетам(ТаблицаКода,МассивМакетовСправочниковДляВставки); - СгенерироватьКодДляСозданияFixturesРСПоМакетам(ТаблицаКода,МассивМакетовРСДляВставки); - СгенерироватьКодСОсновнымиПроцедурами(ТаблицаКода); - - - - - - ДобавитьМассивМакетовВОбработкуИКодМодуля(МассивМакетовСправочниковДляВставки,МассивМакетовРСДляВставки,ПутьКОбработке,ТаблицаКода); - - - Сообщить("ОКОНЧАНИЕ ОБРАБОТКИ " + ТекущаяДата()); - -КонецПроцедуры - - -Функция ПолучитьТаблицуВидовСправочников(ТаблицаОбъектов) - КопияТаблицы = ТаблицаОбъектов.Скопировать(); - - КопияТаблицы.Свернуть("Вид"); - КопияТаблицы.Сортировать("Вид"); - - Возврат КопияТаблицы; -КонецФункции - - -Функция ПолучитьМакетДляВидаСправочника(Вид,ВсяТаблицаОбъектов,ИмяМакета,ПолученоЭлементов) - Отбор = Новый Структура(); - Отбор.Вставить("Вид",Вид); - МассивСтрок = ВсяТаблицаОбъектов.НайтиСтроки(Отбор); - - //СтруктураПараметров = Новый Структура; - - МассивОбъектов = Новый Массив; - - Для каждого СтрокаСОбъектов Из МассивСтрок Цикл - //Сообщить("" + СтрокаСОбъектов.Объект + ", Вид="+СтрокаСОбъектов.Вид); - - //СтруктураОбъекта = Новый Структура; - //СтруктураОбъекта.Вставить("Объект",СтрокаСОбъектов.Объект); - //СтруктураОбъекта.Вставить("Вид",СтрокаСОбъектов.Вид); - - МассивОбъектов.Добавить(СтрокаСОбъектов.Объект); - - КонецЦикла; - - //СтруктураПараметров.Вставить("МассивОбъектов",МассивОбъектов); - - - - ГенераторFixtures = ВнешниеОбработки.Создать(ПутьКГенераторуFixtures); - ФормаГенератора = ГенераторFixtures.ПолучитьФорму("Форма"); - ФормаГенератора.Открыть(); - ГенераторFixtures.ВыгружатьКод = Истина; - ГенераторFixtures.ОбменДанными = Истина; - - ДеревоМетаданных = ГенераторFixtures.ДеревоМетаданных; - //ДеревоМетаданных.ВыбратьСтроку(); - - ВеткаСправочников = ДеревоМетаданных.Строки[0].Строки[0]; - //Для каждого СтрокаДерева Из ВеткаСправочников.Строки Цикл - // Сообщить("" + СтрокаДерева.ПолноеИмяМетаданных); - //КонецЦикла; - НужнаяСтрокаДерева = ВеткаСправочников.Строки.Найти(Вид,"ПолноеИмяМетаданных"); - Если НужнаяСтрокаДерева = Неопределено Тогда - Сообщить("Не найдена строка справочника в дереве. Вид="+вид); - Возврат Неопределено; - КонецЕсли; - - - НужнаяСтрокаДерева.Выгружать = Истина; - НужнаяСтрокаДерева.ИспользоватьОтбор = Истина; - - - - ФормаГенератора.ЭлементыФормы.ДеревоМетаданных.ТекущаяСтрока = НужнаяСтрокаДерева; - //ФормаГенератора.ДеревоМетаданныхПриАктивизацииСтроки(""); - - - ЭлементОтбора = ГенераторFixtures.КомпоновщикНастроекКомпоновкиДанных.Настройки.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных")); - ЭлементОтбора.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Ссылка"); - ЭлементОтбора.ВидСравнения = ВидСравненияКомпоновкиДанных.ВСписке; - - СпсЗначений = Новый СписокЗначений; - //СпсЗначений.ЗагрузитьЗначения(ВсяТаблицаОбъектов.ВыгрузитьКолонку("Объект")); - СпсЗначений.ЗагрузитьЗначения(МассивОбъектов); - ЭлементОтбора.ПравоеЗначение = СпсЗначений; - - ЭлементОтбора.Использование = Истина; - - НужнаяСтрокаДерева.НастройкиКомпоновщика = ГенераторFixtures.КомпоновщикНастроекКомпоновкиДанных.Настройки.Отбор; - - ПолученоЭлементов = СпсЗначений.Количество(); - Сообщить("Получаю fixtures для справочника " + Вид + ", в отборе " + ПолученоЭлементов + " элементов."); - - Макет = Новый ТабличныйДокумент; - Макет.Прочитать(ПутьУПустомуПравильномуМакету); - ГенераторFixtures.СоздатьМакетДанныхПоМетаданным(Макет); - - ИмяМакета = "Справочник_" + Вид; - Макет.Показать(ИмяМакета); - - ФормаГенератора.Закрыть(); - ГенераторFixtures = Неопределено; - - Сообщить("Получено " + Макет.ВысотаТаблицы + " строк."); - - Возврат Макет; - -КонецФункции - -Процедура ПолучитьFixturesДляСправочников(ТаблицаОбъектов,МассивМакетовСправочниковДляВставки) - - ФайлГенератораfixtures = Новый Файл(ПутьКГенераторуFixtures); - Если Не ФайлГенератораfixtures.Существует() Тогда - Сообщить("Не найден файл генератора Fixtures."); - Возврат; - КонецЕсли; - - - ТаблицаВидов = ПолучитьТаблицуВидовСправочников(ТаблицаОбъектов); - //ТаблицаВидов.ВыбратьСтроку(); - - Для каждого СтрТаблицаВидов Из ТаблицаВидов Цикл - ОбработкаПрерыванияПользователя(); - - Вид = СтрТаблицаВидов.Вид; - //Сообщить("Получаю fixtures для справочника " + Вид); - - ИмяМакета = ""; - ПолученоЭлементов = 0; - Макет = ПолучитьМакетДляВидаСправочника(Вид,ТаблицаОбъектов,ИмяМакета,ПолученоЭлементов); - //Сообщить("Получено " + Макет.ВысотаТаблицы + " строк."); - - - - СтруктураМакета = Новый Структура; - СтруктураМакета.Вставить("Макет",Макет); - СтруктураМакета.Вставить("ИмяМакета",ИмяМакета); - СтруктураМакета.Вставить("ПолученоЭлементов",ПолученоЭлементов); - - МассивМакетовСправочниковДляВставки.Добавить(СтруктураМакета); - - //Сообщить("ПОТОМ УБРАТь!!! ВЫГРУЖАЕТСЯ ТОЛЬКО ОДИН СПРАВОЧНИК!!!"); - //Прервать; - КонецЦикла; - - -КонецПроцедуры - -Процедура СделатьСообщение(Стр); - Сообщить(Стр); -КонецПроцедуры - -Процедура ВыполнитьКомандуОС(Стр) - КомандаСистемы(Стр); - //СистемнаяИнформация = Новый СистемнаяИнформация; - // - //Если (СистемнаяИнформация.ТипПлатформы = ТипПлатформы.Windows_x86) или (СистемнаяИнформация.ТипПлатформы = ТипПлатформы.Windows_x86_64) Тогда - // Попытка - // ИмяВременногоBAT = ПолучитьИмяВременногоФайла("cmd"); - // - // //ЗТ = Новый ЗаписьТекста(ИмяВременногоBAT,"UTF-8",,Истина); - // ЗТ = Новый ЗаписьТекста(ИмяВременногоBAT,"UTF-8",,Истина); - // ЗТ.ЗаписатьСтроку(Стр); - // ЗТ.Закрыть(); - // - // WshShell = Новый COMОбъект("WScript.Shell"); - // //Сообщить(Стр); - // WshShell.Run(ИмяВременногоBAT,7,-1); - // УдалитьФайлы(ИмяВременногоBAT); - // Исключение - // #Если Клиент Тогда - // КомандаСистемы(Стр); - // #КонецЕсли - // КонецПопытки; - //Иначе - // ВызватьИсключение "Команда системы реализована только под Windows."; - //КонецЕсли; - -КонецПроцедуры - - -Функция РаспаковатьEPF(ИмяФайла,КаталогРаспаковки) - ФайлПрекомит = Новый Файл(ПутьКPrecommit); - Если НЕ ФайлПрекомит.Существует() Тогда - Сообщить("Не найден каталог прекоммита!"); - Возврат Ложь; - КонецЕсли; - - - ГенерироватьУФ = Ложь; - КаталогИнструментов = ПутьКPrecommit; - ЭтоУФ = Ложь; - Попытка - - Файл = Новый Файл(ИмяФайла); - - //ИмяКаталогаДляИсходников = Файл.Путь + "Src"; - ИмяКаталогаДляИсходников = КаталогРаспаковки; - - Если ГенерироватьУФ Тогда - ПутьКФайлуМодуля = ИмяКаталогаДляИсходников + "\" + Файл.ИмяБезРасширения + "\Form\Форма\Форма.txt"; - Иначе - ПутьКФайлуМодуля = ИмяКаталогаДляИсходников + "\" + Файл.ИмяБезРасширения + "\ObjectModule.txt"; - КонецЕсли; - - - - //ИмяКаталогаДляИсходников = КаталогВременныхФайлов() + "\src"; - - - УдалитьФайлы(ИмяКаталогаДляИсходников + "\" + Файл.ИмяБезРасширения); - ФайлКаталогSrc = Новый Файл(ИмяКаталогаДляИсходников); - Если Не ФайлКаталогSrc.Существует() Тогда - СоздатьКаталог(ИмяКаталогаДляИсходников); - КонецЕсли; - - СтрокаРазборкиEpf = "python " + КаталогИнструментов + "\pyv8unpack.py """ + ИмяФайла + """ """ + ИмяКаталогаДляИсходников + """"; - СделатьСообщение("Делаю распаковку " + Файл.ПолноеИмя); - СделатьСообщение("Строка распаковки: " + СтрокаРазборкиEpf); - //КомандаСистемы(СтрокаРазборкиEpf,КаталогИнструментов); - ВыполнитьКомандуОС(СтрокаРазборкиEpf); - - - //Файл = Новый Файл(ПутьКФайлуМодуля); - //Если Не Файл.Существует() Тогда - // СделатьСообщение("Не найден файл после распаковки: " + ПутьКФайлуМодуля); - // Если ЭтоУФ Тогда - // СделатьСообщение("Возможно это обработка для обычных форм, а не для управляемых форм."); - // Иначе - // СделатьСообщение("Возможно это обработка для управляемых форм, а не для обычных форм."); - // КонецЕсли; - // Возврат Ложь; - //КонецЕсли; - - - Исключение - СделатьСообщение("Не смог распаковать " + ИмяФайла); - СделатьСообщение(ОписаниеОшибки()); - Возврат Ложь; - КонецПопытки; - - Возврат Истина; -КонецФункции - -Процедура УбратьЗаменитьЗапрещенныеСимволыИзСтроки(Стр) - Стр = СтрЗаменить(Стр,".","_"); - Стр = СтрЗаменить(Стр,",",""); - Стр = СтрЗаменить(Стр,":",""); - Стр = СтрЗаменить(Стр,";",""); - Стр = СтрЗаменить(Стр,"-","_"); - Стр = СтрЗаменить(Стр,"+",""); - //Стр = СтрЗаменить(Стр,"<",""); - //Стр = СтрЗаменить(Стр,">",""); -КонецПроцедуры - - -Процедура ЗаписатьМакетСПравильнымИменем(ИмяМакета,Макет,КаталогДляРаботы,ИДМакета) - УбратьЗаменитьЗапрещенныеСимволыИзСтроки(ИмяМакета); - - УИД = Новый УникальныйИдентификатор; - //Сообщить("ПРОИСХОДИТ ПОДМЕНА УИД!!! ПОТОМ УБРАТЬ!!!"); - //УИД = "7a3e66f5-c873-4e1b-9d97-2c5359d503a9"; - УИД = СокрЛП(УИД); - - ИДМакета = УИД; - - ИмяФайлаОписанияМакета = КаталогДляРаботы + "\" + УИД; - - ЗТ = Новый ЗаписьТекста(ИмяФайлаОписанияМакета,"UTF-8",,Истина); - ЗТ.ЗаписатьСтроку("{1,"); - ЗТ.ЗаписатьСтроку("{2,0,"); - ЗТ.ЗаписатьСтроку("{1,"); - ЗТ.ЗаписатьСтроку("{0,0," + УИД + "},""" + ИмяМакета + ""","); - ЗТ.ЗаписатьСтроку("{1,""ru"",""" + ИмяМакета + """},"""",0,0}"); - ЗТ.ЗаписатьСтроку("},0}"); - - ЗТ.Закрыть(); - - //Сообщить("Записал описание макета " + ИмяФайлаОписанияМакета); - - - ФайлТелоМакета = КаталогДляРаботы + "\" + УИД + ".0"; - //Макет = Новый ТабличныйДокумент; - Макет.Записать(ФайлТелоМакета); -КонецПроцедуры - -Функция ПолучитьИмяФайлаRoot(КаталогДляРаботы) - - СтрокаВозврата = Неопределено; - - ИмяФайла = КаталогДляРаботы + "\root"; - ФайлПроверкаСуществования = Новый Файл(ИмяФайла); - Если НЕ ФайлПроверкаСуществования.Существует() Тогда - Сообщить("Файл " + ИмяФайла + " не существует!"); - Возврат Неопределено; - КонецЕсли; - - Текст = Новый ЧтениеТекста; - Текст.Открыть(ИмяФайла,"UTF-8"); - - Пока Истина Цикл - Стр = Текст.ПрочитатьСтроку(); - Если Стр = Неопределено Тогда - Прервать; - КонецЕсли; - - Стр = Сред(Стр,4); - Стр = Лев(Стр,СтрДлина(Стр)-2); - //Сообщить(Стр); - - СтрокаВозврата = Стр; - КонецЦикла; - - Текст.Закрыть(); - - - Возврат СтрокаВозврата; -КонецФункции - -Процедура ЗаписатьВФайлRootИДМакетов(ПутьКRoot,МассивМакетовСправочниковДляВставки) - Текст = Новый ЧтениеТекста; - Текст.Открыть(ПутьКRoot,"UTF-8"); - - ИмяВременногоФайла = ПолучитьИмяВременногоФайла("txt"); - ЗТ = Новый ЗаписьТекста(ИмяВременногоФайла,"UTF-8",,Истина); - - СтрокаДляИДМакетов = "{3daea016-69b7-4ed4-9453-127911372fe6,"; - - Пока Истина Цикл - Стр = Текст.ПрочитатьСтроку(); - Если Стр = Неопределено Тогда - Прервать; - КонецЕсли; - - Поз = Найти(Стр,СтрокаДляИДМакетов); - Если Поз > 0 Тогда - //это строка в которой лежат макеты - ПромСтр = СтрЗаменить(Стр,СтрокаДляИДМакетов,""); - Поз1 = Найти(ПромСтр,","); - Поз2 = Найти(ПромСтр,"}"); - Поз = Мин(Поз1,Поз2); - - ИдУжеСуществующихМакетов = ""; - - СтрТекКолМакетов = Лев(ПромСтр,Поз-1); - ТекКолМакетов = Число(СтрТекКолМакетов); - Если ТекКолМакетов > 0 Тогда - ИдУжеСуществующихМакетов = Сред(ПромСтр,Поз1); - ИдУжеСуществующихМакетов = Лев(ИдУжеСуществующихМакетов,СтрДлина(ИдУжеСуществующихМакетов)-2);//убрали }, - КонецЕсли; - НовоеЧислоМакетов = ТекКолМакетов + МассивМакетовСправочниковДляВставки.Количество(); - СтрНовоеЧислоМакетов = СтрЗаменить(Строка(НовоеЧислоМакетов),Символы.НПП,""); - - СтрокаДляИДМакетов = СтрокаДляИДМакетов + СтрНовоеЧислоМакетов + ИдУжеСуществующихМакетов; - Для каждого Элем Из МассивМакетовСправочниковДляВставки Цикл - ИдМакета = Элем.ИдМакета; - СтрокаДляИДМакетов = СтрокаДляИДМакетов + "," + ИдМакета; - КонецЦикла; - СтрокаДляИДМакетов = СтрокаДляИДМакетов + "},"; - - Стр = СтрокаДляИДМакетов; - КонецЕсли; - - ЗТ.ЗаписатьСтроку(Стр); - КонецЦикла; - - - - Текст.Закрыть(); - ЗТ.Закрыть(); - - //Сообщить("Записал " + ИмяВременногоФайла); - - КопироватьФайл(ИмяВременногоФайла,ПутьКRoot); - - -КонецПроцедуры - -Процедура ДобавитьСтрокиВФайлRenames(ПтуьКRenames,МассивМакетовСправочниковДляВставки) - ЗТ = Новый ЗаписьТекста(ПтуьКRenames,"UTF-8",,Истина); - - Для каждого Элем Из МассивМакетовСправочниковДляВставки Цикл - ЗТ.ЗаписатьСтроку(Элем.ИдМакета + "-->und\" + Элем.ИдМакета); - ЗТ.ЗаписатьСтроку(Элем.ИдМакета + ".0-->Макеты\" + Элем.ИмяМакета + ".mxl"); - ЗТ.ЗаписатьСтроку(Элем.ИдМакета + ".0-->und\" + Элем.ИдМакета + ".0"); - КонецЦикла; - - ЗТ.Закрыть(); - -КонецПроцедуры - -Процедура СкопироватьФайлыМакетовВСлужебныйКаталог(КудаСкопироватьМакеты,МассивМакетовСправочниковДляВставки) - ФайлПроверкаСуществования = Новый Файл(КудаСкопироватьМакеты); - Если НЕ ФайлПроверкаСуществования.Существует() Тогда - СоздатьКаталог(КудаСкопироватьМакеты); - КонецЕсли; - - - Для каждого Элем Из МассивМакетовСправочниковДляВставки Цикл - Макет = Элем.Макет; - //Макет = Новый ТабличныйДокумент; - Макет.Записать(КудаСкопироватьМакеты + "\" + Элем.ИмяМакета + ".mxl"); - КонецЦикла; -КонецПроцедуры - - -Процедура ДобавитьВМодульОбъектаОбработкиТаблицуКода(ПутькМодулюОбработки,ТаблицаКода) - ФайлПроверкаСуществования = Новый Файл(ПутькМодулюОбработки); - Если НЕ ФайлПроверкаСуществования.Существует() Тогда - Сообщить("Файл " + ПутькМодулюОбработки + " не существует!"); - Возврат; - КонецЕсли; - - ИмяВременногоФайла = ПолучитьИмяВременногоФайла("txt"); - - //скопируем то, что уже есть - КопироватьФайл(ПутькМодулюОбработки,ИмяВременногоФайла); - - - - - //ЗТ = Новый ЗаписьТекста(ИмяВременногоФайла,"UTF-8",,Истина); - ЗТ = Новый ЗаписьТекста; - ЗТ.Открыть(ИмяВременногоФайла,"UTF-8",,Истина); - Для каждого СтрТаблицаКода Из ТаблицаКода Цикл - ЗТ.ЗаписатьСтроку(СтрТаблицаКода.СтрокаКода); - КонецЦикла; - ЗТ.Закрыть(); - - - КопироватьФайл(ИмяВременногоФайла,ПутькМодулюОбработки); -КонецПроцедуры - -Процедура ЗаписатьСтрокуПодключенияКxUnitВМодульОбработки(ПутькМодулюОбработки) - ФайлПроверкаСуществования = Новый Файл(ПутькМодулюОбработки); - Если НЕ ФайлПроверкаСуществования.Существует() Тогда - Сообщить("Файл " + ПутькМодулюОбработки + " не существует!"); - Возврат; - КонецЕсли; - - ИмяВременногоФайла = ПолучитьИмяВременногоФайла("txt"); - - - ЗТ = Новый ЗаписьТекста; - ЗТ.Открыть(ИмяВременногоФайла,"UTF-8",,Истина); - - Текст = Новый ЧтениеТекста; - Текст.Открыть(ПутькМодулюОбработки,"UTF-8"); - - Пока Истина Цикл - Стр = Текст.ПрочитатьСтроку(); - Если Стр = Неопределено Тогда - Прервать; - КонецЕсли; - - Если Найти(Стр,"тут должно быть определено, как подключиться к xUnit") > 0 Тогда - Стр = СтрокаПодключенияКxUnit; - КонецЕсли; - - ЗТ.ЗаписатьСтроку(Стр); - КонецЦикла; - - Текст.Закрыть(); - ЗТ.Закрыть(); - - - КопироватьФайл(ИмяВременногоФайла,ПутькМодулюОбработки); -КонецПроцедуры - -Процедура ДобавитьМассивМакетовВОбработкуИКодМодуля(МассивМакетовСправочниковДляВставки,МассивМакетовРСДляВставки,ПутьКОбработке,ТаблицаКода) - ФайлОбработки = Новый Файл(ПутьКОбработке); - Если НЕ ФайлОбработки.Существует() Тогда - Сообщить("Файл " + ПутьКОбработке + " не найден."); - Возврат; - КонецЕсли; - - - - КаталогРаспаковки = "C:\Temp\111"; - //КаталогДляРаботы = ФайлОбработки.Путь + "Src\" + ФайлОбработки.ИмяБезРасширения + "\und"; - КаталогДляРаботы = КаталогРаспаковки + "\" + ФайлОбработки.ИмяБезРасширения + "\und"; - //ПутьКИсходникам = ФайлОбработки.Путь + "Src\" + ФайлОбработки.ИмяБезРасширения; - ПутьКИсходникам = КаталогРаспаковки + "\" + ФайлОбработки.ИмяБезРасширения; - КаталогИнструментов = ПутьКPrecommit; - - ИмяВременнойEPF = ПутьКГенерируемойEPF; - УдалитьФайлы(ИмяВременнойEPF); - - - - - //СтрокаСборкиEpf = "python " + КаталогИнструментов + "\pyv8unpack.py --compile """ + ПутьКИсходникам + """ """ + ИмяВременнойEPF + """"; - //Сообщить("СтрокаСборкиEpf="+СтрокаСборкиEpf); - //ВыполнитьКомандуОС(СтрокаСборкиEpf); - //Сообщить("ПОТОМ ВЕРНУТЬ СОЗДАНИЕ EPF С МАКЕТАМИ!!!!!!!!!!!!!!!"); - //Возврат; - - - Если НЕ РаспаковатьEPF(ПутьКОбработке,КаталогРаспаковки) Тогда - Возврат; - КонецЕсли; - - //Возврат; - - - //Для каждого Элем Из МассивМакетовСправочниковДляВставки Цикл - // ИмяМакета = Элем.ИмяМакета; - // УбратьЗаменитьЗапрещенныеСимволыИзСтроки(ИмяМакета); - // Элем.ИмяМакета = ИмяМакета; - //КонецЦикла; - - - //Возврат; - //Сообщить("ПОТОМ ВЕРНУТЬ РАСПАКОВКУ!!!!!!!!!!!!!!!"); - - - - - //СтрокаСборкиEpf = "python " + КаталогИнструментов + "\pyv8unpack.py --compile """ + ПутьКИсходникам + """ """ + ИмяВременнойEPF + """"; - //Сообщить("СтрокаСборкиEpf="+СтрокаСборкиEpf); - //ВыполнитьКомандуОС(СтрокаСборкиEpf); - //Сообщить("ПОТОМ ВЕРНУТЬ СОЗДАНИЕ EPF С МАКТАМИ!!!!!!!!!!!!!!!"); - //Возврат; - - - Для каждого Элем Из МассивМакетовСправочниковДляВставки Цикл - ИмяМакета = Элем.ИмяМакета; - Макет = Элем.Макет; - ИДМакета = ""; - ЗаписатьМакетСПравильнымИменем(ИмяМакета,Макет,КаталогДляРаботы,ИДМакета); - Элем.Вставить("ИДМакета",ИДМакета); - КонецЦикла; - - Для каждого Элем Из МассивМакетовРСДляВставки Цикл - ИмяМакета = Элем.ИмяМакета; - Макет = Элем.Макет; - ИДМакета = ""; - ЗаписатьМакетСПравильнымИменем(ИмяМакета,Макет,КаталогДляРаботы,ИДМакета); - Элем.Вставить("ИДМакета",ИДМакета); - КонецЦикла; - - - - ИмяФайлаRoot = ПолучитьИмяФайлаRoot(КаталогДляРаботы); - Если ИмяФайлаRoot = Неопределено Тогда - Сообщить("Не смог прочитать файл root."); - Возврат; - КонецЕсли; - - ПутьКRoot = КаталогДляРаботы + "\" + ИмяФайлаRoot; - ЗаписатьВФайлRootИДМакетов(ПутьКRoot,МассивМакетовСправочниковДляВставки); - ЗаписатьВФайлRootИДМакетов(ПутьКRoot,МассивМакетовРСДляВставки); - - ПтуьКRenames = ПутьКИсходникам + "\renames.txt"; - ДобавитьСтрокиВФайлRenames(ПтуьКRenames,МассивМакетовСправочниковДляВставки); - ДобавитьСтрокиВФайлRenames(ПтуьКRenames,МассивМакетовРСДляВставки); - - КудаСкопироватьМакеты = ПутьКИсходникам + "\Макеты"; - СкопироватьФайлыМакетовВСлужебныйКаталог(КудаСкопироватьМакеты,МассивМакетовСправочниковДляВставки); - СкопироватьФайлыМакетовВСлужебныйКаталог(КудаСкопироватьМакеты,МассивМакетовРСДляВставки); - - - - ПутькМодулюОбработки = ПутьКИсходникам + "\ObjectModule.txt"; - ЗаписатьСтрокуПодключенияКxUnitВМодульОбработки(ПутькМодулюОбработки); - Если ТаблицаКода <> Неопределено Тогда - ДобавитьВМодульОбъектаОбработкиТаблицуКода(ПутькМодулюОбработки,ТаблицаКода); - КонецЕсли; - - - - - СтрокаСборкиEpf = "python " + КаталогИнструментов + "\pyv8unpack.py --compile """ + ПутьКИсходникам + """ """ + ИмяВременнойEPF + """"; - Сообщить("СтрокаСборкиEpf="+СтрокаСборкиEpf); - - ВыполнитьКомандуОС(СтрокаСборкиEpf); - -КонецПроцедуры - - -Процедура ОсновныеДействияФормыТестРаспаковки(Кнопка) - МассивМакетовСправочниковДляВставки = Новый Массив; - ТД = Новый ТабличныйДокумент; - ТД.Прочитать("C:\Temp\Справочник.ШаблонПисем.mxl"); - - СтруктураМакета = Новый Структура; - СтруктураМакета.Вставить("Макет",ТД); - СтруктураМакета.Вставить("ИмяМакета","Справочник.ШаблонПисем"); - - МассивМакетовСправочниковДляВставки.Добавить(СтруктураМакета); - - ПутьКОбработке = "C:\Commons\Rep\vanessa-BaseInit\ШаблонОбработкиДляНачальногоЗаполнения.epf"; - - ПромМассив = Новый Массив; - ДобавитьМассивМакетовВОбработкуИКодМодуля(МассивМакетовСправочниковДляВставки,ПромМассив,ПутьКОбработке,Неопределено); - -КонецПроцедуры - - - -Процедура ВосстановитьНастройки() - Настройки = ХранилищеОбщихНастроек.Загрузить("vanessa-base-init"); - Если ТипЗнч(Настройки) = Тип("Структура") Тогда - Настройки.Свойство("ПутьКГенераторуFixtures", ПутьКГенераторуFixtures); - Настройки.Свойство("ПутьКPrecommit", ПутьКPrecommit); - Настройки.Свойство("ПутьУПустомуПравильномуМакету", ПутьУПустомуПравильномуМакету); - Настройки.Свойство("ПутьКШаблонуОбработки", ПутьКШаблонуОбработки); - Настройки.Свойство("ПутьКГенерируемойEPF", ПутьКГенерируемойEPF); - Настройки.Свойство("СколькоВыгружатьЭлементаСправочника", СколькоВыгружатьЭлементаСправочника); - Настройки.Свойство("ПорогДляПолннойВыгрузкиСправочника", ПорогДляПолннойВыгрузкиСправочника); - Настройки.Свойство("СписокВидовСправочниковКоторыеНеНадоВыгружать", СписокВидовСправочниковКоторыеНеНадоВыгружать); - Настройки.Свойство("СписокВидовРСоторыеНеНадоВыгружать", СписокВидовРСоторыеНеНадоВыгружать); - Настройки.Свойство("ПорогДляПолннойВыгрузкиРС", ПорогДляПолннойВыгрузкиРС); - Настройки.Свойство("флагВыгружатьКонстанты", флагВыгружатьКонстанты); - Настройки.Свойство("флагВыгружатьСправочники", флагВыгружатьСправочники); - Настройки.Свойство("флагВыгружатьРС", флагВыгружатьРС); - Настройки.Свойство("СтрокаПодключенияКxUnit", СтрокаПодключенияКxUnit); - Настройки.Свойство("ТестовыйРежим", ТестовыйРежим); - КонецЕсли; -КонецПроцедуры - -Процедура СохранитьНастройки() - Настройки = Новый Структура; - Настройки.Вставить("ПутьКГенераторуFixtures", ПутьКГенераторуFixtures); - Настройки.Вставить("ПутьКPrecommit", ПутьКPrecommit); - Настройки.Вставить("ПутьУПустомуПравильномуМакету", ПутьУПустомуПравильномуМакету); - Настройки.Вставить("ПутьКШаблонуОбработки", ПутьКШаблонуОбработки); - Настройки.Вставить("ПутьКГенерируемойEPF", ПутьКГенерируемойEPF); - Настройки.Вставить("СколькоВыгружатьЭлементаСправочника", СколькоВыгружатьЭлементаСправочника); - Настройки.Вставить("ПорогДляПолннойВыгрузкиСправочника", ПорогДляПолннойВыгрузкиСправочника); - Настройки.Вставить("СписокВидовСправочниковКоторыеНеНадоВыгружать", СписокВидовСправочниковКоторыеНеНадоВыгружать); - Настройки.Вставить("СписокВидовРСоторыеНеНадоВыгружать", СписокВидовРСоторыеНеНадоВыгружать); - Настройки.Вставить("ПорогДляПолннойВыгрузкиРС", ПорогДляПолннойВыгрузкиРС); - Настройки.Вставить("флагВыгружатьКонстанты", флагВыгружатьКонстанты); - Настройки.Вставить("флагВыгружатьСправочники", флагВыгружатьСправочники); - Настройки.Вставить("флагВыгружатьРС", флагВыгружатьРС); - Настройки.Вставить("СтрокаПодключенияКxUnit", СтрокаПодключенияКxUnit); - Настройки.Вставить("ТестовыйРежим", ТестовыйРежим); - ХранилищеОбщихНастроек.Сохранить("vanessa-base-init",, Настройки); -КонецПроцедуры - - - -Процедура ПриОткрытии() - ВосстановитьНастройки(); - - ЭтаФорма.Заголовок = "Создание обработки по созданию fixtures для начального заполнения базы. " + ПолучитьВерсиюОбработки(); - - //заполним настройки, если обработка открывается в первый раз - начало - Если ПутьКГенераторуFixtures = "" Тогда - ПутьКГенераторуFixtures = "C:\Commons\Rep\xUnitFor1C\xddDataFixtureGen.epf"; - КонецЕсли; - Если ПутьКPrecommit = "" Тогда - ПутьКPrecommit = "C:\Commons\Rep\vanessa-base-init\.git\hooks"; - КонецЕсли; - Если ПутьУПустомуПравильномуМакету = "" Тогда - ПутьУПустомуПравильномуМакету = "C:\Commons\Rep\vanessa-base-init\ПустойПравильныйМакет.mxl"; - КонецЕсли; - Если ПутьКШаблонуОбработки = "" Тогда - ПутьКШаблонуОбработки = "C:\Commons\Rep\vanessa-base-init\ШаблонОбработкиДляНачальногоЗаполнения.epf"; - КонецЕсли; - Если ПутьКГенерируемойEPF = "" Тогда - ПутьКГенерируемойEPF = "C:\Temp\111.epf"; - КонецЕсли; - Если СколькоВыгружатьЭлементаСправочника = 0 Тогда - СколькоВыгружатьЭлементаСправочника = 15; - КонецЕсли; - Если ПорогДляПолннойВыгрузкиСправочника = 0 Тогда - ПорогДляПолннойВыгрузкиСправочника = 50; - КонецЕсли; - Если ПорогДляПолннойВыгрузкиРС = 0 Тогда - ПорогДляПолннойВыгрузкиРС = 10; - КонецЕсли; - Если СтрокаПодключенияКxUnit = "" Тогда - СтрокаПодключенияКxUnit = " xUnit = ВнешниеОбработки.Создать(""C:\Commons\Rep\xUnitFor1C\xddTestRunner.epf"");"; - КонецЕсли; - //заполним настройки, если обработка открывается в первый раз - окончание -КонецПроцедуры - -Процедура ПриЗакрытии() - СохранитьНастройки(); -КонецПроцедуры - -//Сообщить("111 " + Метаданные.ОсновнойЯзык); -//Макет = Новый ТабличныйДокумент; -//Макет.Прочитать("c:\users\pautov\desktop\444.mxl"); -//Макет.Показать(); -//ыа = 1; -//Макет.КодЯзыкаМакета = Метаданные.ОсновнойЯзык.КодЯзыка; -//Макет.Показать(); -//Макет.Записать("c:\users\pautov\desktop\333.mxl"); -//ыва = 1; - -//Метаданные.ОсновнойЯзык.КодЯзыка - - - - - - +Перем СчетчикОбъектов; + + +Процедура КнопкаВыполнитьНажатие(Кнопка) + // Вставить содержимое обработчика. +КонецПроцедуры + +Функция ПолучитьМассивКонстантДляОбработки() + Массив = Новый Массив; + + Для каждого Элем Из Метаданные.Константы Цикл + //Сообщить(Элем); + Имя = Элем.Имя; + Массив.Добавить(Имя); + КонецЦикла; + + Возврат Массив; +КонецФункции + +Функция ПолучитьСтрокуДляСтруктуры(Структура,ТаблицаСправочниковДляПолученияМакетовFixtures,ТаблицаКода,ВернутьИмяПеременной = Ложь) + + //Сообщить(" "); + //Сообщить("ОбъектДляХранилищаЗначения = Новый Структура;"); + СчетчикОбъектов = СчетчикОбъектов + 1; + ИмяПеременной = "Структура" + СчетчикОбъектов; + + ДобавитьСтрокуКода(ТаблицаКода," "); + ДобавитьСтрокуКода(ТаблицаКода,ИмяПеременной + " = Новый Структура;"); + + Для каждого Элем Из Структура Цикл + Ключ = Элем.Ключ; + Значение = Элем.Значение; + Если Значение = Неопределено Тогда + //Сообщить("ОбъектДляХранилищаЗначения.Вставить(""" + Ключ + """,Неопределено);"); + ДобавитьСтрокуКода(ТаблицаКода,ИмяПеременной + ".Вставить(""" + Ключ + """,Неопределено);"); + Продолжить; + КонецЕсли; + + СтрокаЗначения = ПолучитьСтрокуДляЗначения(Значение,"",ТаблицаСправочниковДляПолученияМакетовFixtures,ТаблицаКода); + Если СтрокаЗначения = Неопределено Тогда + СтрокаЗначения = "Неопределено"; + КонецЕсли; + //Сообщить("ОбъектДляХранилищаЗначения.Вставить(""" + Ключ + """," + СтрокаЗначения + ");"); + ДобавитьСтрокуКода(ТаблицаКода,ИмяПеременной + ".Вставить(""" + Ключ + """," + СтрокаЗначения + ");"); + КонецЦикла; + + Если ВернутьИмяПеременной Тогда + Возврат ИмяПеременной; + Иначе + ДобавитьСтрокуКода(ТаблицаКода,"ХранилищеЗначения = Новый ХранилищеЗначения(" + ИмяПеременной + ");"); + КонецЕсли; + + Возврат "//Была создана структура"; +КонецФункции + +Функция ПолучитьСтрокуДляСоответствия(Соответствие,ТаблицаСправочниковДляПолученияМакетовFixtures,ТаблицаКода,ВернутьИмяПеременной = Ложь) + + //Сообщить(" "); + //Сообщить("ОбъектДляХранилищаЗначения = Новый Структура;"); + СчетчикОбъектов = СчетчикОбъектов + 1; + ИмяПеременной = "Соответствие" + СчетчикОбъектов; + + ДобавитьСтрокуКода(ТаблицаКода," "); + ДобавитьСтрокуКода(ТаблицаКода,ИмяПеременной + " = Новый Соответствие;"); + + Для каждого Элем Из Соответствие Цикл + Ключ = Элем.Ключ; + Значение = Элем.Значение; + + СтрокаЗначения = ПолучитьСтрокуДляЗначения(Значение,"",ТаблицаСправочниковДляПолученияМакетовFixtures,ТаблицаКода); + СтрокаКлюч = ПолучитьСтрокуДляЗначения(Ключ,"",ТаблицаСправочниковДляПолученияМакетовFixtures,ТаблицаКода); + Если СтрокаЗначения = Неопределено Тогда + СтрокаЗначения = "Неопределено"; + КонецЕсли; + //Сообщить("ОбъектДляХранилищаЗначения.Вставить(""" + Ключ + """," + СтрокаЗначения + ");"); + ДобавитьСтрокуКода(ТаблицаКода,ИмяПеременной + ".Вставить(" + СтрокаКлюч + "," + СтрокаЗначения + ");"); + КонецЦикла; + + Если ВернутьИмяПеременной Тогда + Возврат ИмяПеременной; + Иначе + ДобавитьСтрокуКода(ТаблицаКода,"ХранилищеЗначения = Новый ХранилищеЗначения(" + ИмяПеременной + ");"); + КонецЕсли; + + Возврат "//Была создана структура"; +КонецФункции + +Функция ПолучитьСтрокуДляСпискаЗначений(Спс,ТаблицаСправочниковДляПолученияМакетовFixtures,ТаблицаКода,ВернутьИмяПеременной = Ложь) + + //Сообщить(" "); + //Сообщить("ОбъектДляХранилищаЗначения = Новый Структура;"); + СчетчикОбъектов = СчетчикОбъектов + 1; + ИмяПеременной = "СписокЗначений" + СчетчикОбъектов; + + ДобавитьСтрокуКода(ТаблицаКода," "); + ДобавитьСтрокуКода(ТаблицаКода,ИмяПеременной + " = Новый СписокЗначений;"); + + //Спс = Новый СписокЗначений; + //Спс.Добавить(Справочники.Номенклатура.НайтиПоКоду("00000001728"),"Товар"); + Для каждого Элем Из Спс Цикл + Значение = Элем.Значение; + Представление = Элем.Представление; + Если Значение = Неопределено Тогда + //Сообщить("ОбъектДляХранилищаЗначения.Вставить(""" + Ключ + """,Неопределено);"); + ДобавитьСтрокуКода(ТаблицаКода,ИмяПеременной + ".Добавить(Неопределено,""" + Представление + """);"); + Продолжить; + КонецЕсли; + + СтрокаЗначения = ПолучитьСтрокуДляЗначения(Значение,"",ТаблицаСправочниковДляПолученияМакетовFixtures,ТаблицаКода); + Если СтрокаЗначения = Неопределено Тогда + СтрокаЗначения = "Неопределено"; + КонецЕсли; + Если ЗначениеЗаполнено(Представление) Тогда + ДобавитьСтрокуКода(ТаблицаКода,ИмяПеременной + ".Добавить(" + СтрокаЗначения + ",""" + Представление + """);"); + Иначе + ДобавитьСтрокуКода(ТаблицаКода,ИмяПеременной + ".Добавить(" + СтрокаЗначения + ");"); + КонецЕсли; + КонецЦикла; + + Если ВернутьИмяПеременной Тогда + Возврат ИмяПеременной; + Иначе + ДобавитьСтрокуКода(ТаблицаКода,"ХранилищеЗначения = Новый ХранилищеЗначения(" + ИмяПеременной + ");"); + КонецЕсли; + Возврат "//Была создана структура"; +КонецФункции + +Функция ПолучитьСтрокуДляТаблицыЗначений(Тзн,ТаблицаСправочниковДляПолученияМакетовFixtures,ТаблицаКода,ВернутьИмяПеременной = Ложь) + + //Сообщить(" "); + //Сообщить("ОбъектДляХранилищаЗначения = Новый Структура;"); + СчетчикОбъектов = СчетчикОбъектов + 1; + ЗначениеСчетчика = СчетчикОбъектов; + ИмяПеременной = "ТаблицаЗначений" + СчетчикОбъектов; + + ДобавитьСтрокуКода(ТаблицаКода," "); + ДобавитьСтрокуКода(ТаблицаКода,ИмяПеременной + " = Новый ТаблицаЗначений;"); + + //Спс = Новый СписокЗначений; + //Спс.Добавить(Справочники.Номенклатура.НайтиПоКоду("00000001728"),"Товар"); + + Для каждого Колонка Из Тзн.Колонки Цикл + ДобавитьСтрокуКода(ТаблицаКода,ИмяПеременной + ".Колонки.Добавить(""" + Колонка.Имя + """);"); + КонецЦикла; + + Ном = 0; + Для каждого СтрокаТаблицы Из Тзн Цикл + Ном = Ном + 1; + ДобавитьСтрокуКода(ТаблицаКода,"//Строка №" + Ном); + ИдСтрокиТаблицы = "СтрокаТаблицы_" + ЗначениеСчетчика; + ДобавитьСтрокуКода(ТаблицаКода,ИдСтрокиТаблицы + " = " + ИмяПеременной + ".Добавить();"); + Для каждого Колонка Из Тзн.Колонки Цикл + ЗначениеИзТаблицы = СтрокаТаблицы[Колонка.Имя]; + Если ЗначениеИзТаблицы = Неопределено Тогда + //Сообщить("ОбъектДляХранилищаЗначения.Вставить(""" + Ключ + """,Неопределено);"); + ДобавитьСтрокуКода(ТаблицаКода,ИдСтрокиТаблицы + "." + Колонка.Имя + "=" + "Неопределено" + ";"); + Продолжить; + КонецЕсли; + + + СтрокаЗначения = ПолучитьСтрокуДляЗначения(ЗначениеИзТаблицы,"",ТаблицаСправочниковДляПолученияМакетовFixtures,ТаблицаКода); + Если СтрокаЗначения = Неопределено Тогда + СтрокаЗначения = "Неопределено"; + КонецЕсли; + ДобавитьСтрокуКода(ТаблицаКода,ИдСтрокиТаблицы + "." + Колонка.Имя + "=" + СтрокаЗначения + ";"); + КонецЦикла; + КонецЦикла; + + Если ВернутьИмяПеременной Тогда + Возврат ИмяПеременной; + Иначе + ДобавитьСтрокуКода(ТаблицаКода,"ХранилищеЗначения = Новый ХранилищеЗначения(" + ИмяПеременной + ");"); + КонецЕсли; + + Возврат "//Была создана структура"; +КонецФункции + +Функция ПолучитьДатуСтрокой(Дат) + Возврат "'" + Формат(Дат,"ДФ=yyyyMMdd") + Формат(Дат,"ДФ=HHmmss") + "'"; +КонецФункции + +Процедура ДобавитьОбъектВТаблицу(ТаблицаОбъектов,Объект,Тип,Вид) + Если Не ЗначениеЗаполнено(Объект) Тогда + Возврат; + КонецЕсли; + + СтрТаблицаОбъектов = ТаблицаОбъектов.Добавить(); + СтрТаблицаОбъектов.Объект = Объект; + СтрТаблицаОбъектов.Тип = Тип; + СтрТаблицаОбъектов.Вид = Вид; +КонецПроцедуры + +Функция ПолучитьСтрокуДляЗначения(Значение,ИмяКонстанты = "",ТаблицаСправочников,ТаблицаКода); + ТипЗначения = ТипЗнч(Значение); + + Если ТипЗначения = Тип("Строка") Тогда + //СтрЧислоСтрок + //СтрПолучитьСтроку + + ПромСтр = СтрЗаменить(Значение,"""",""""""); + ЧислоСтрокВСтроке = СтрЧислоСтрок(ПромСтр); + Если ЧислоСтрокВСтроке = 1 Тогда + Возврат """" + ПромСтр + """"; + Иначе + СтрокаРезультат = """" + СтрПолучитьСтроку(ПромСтр,1); + Для Ккк = 2 По ЧислоСтрокВСтроке Цикл + СтрокаРезультат = СтрокаРезультат + Символы.ПС; + СтрокаРезультат = СтрокаРезультат + Символы.Таб + "|" + СтрПолучитьСтроку(ПромСтр,Ккк); + Если Ккк = ЧислоСтрокВСтроке Тогда + СтрокаРезультат = СтрокаРезультат + """"; + КонецЕсли; + КонецЦикла; + + Возврат СтрокаРезультат; + //Сообщить("Стр = """ + СтрПолучитьСтроку(ПромСтр,1)); + //ДобавитьСтрокуКода(ТаблицаКода,"Стр = """ + СтрПолучитьСтроку(ПромСтр,1)); + //Для Ккк=2 По ЧислоСтрокВСтроке Цикл + // Если Ккк = ЧислоСтрокВСтроке Тогда + // //Сообщить("|" + СтрПолучитьСтроку(ПромСтр,Ккк) + """;"); + // ДобавитьСтрокуКода(ТаблицаКода,"|" + СтрПолучитьСтроку(ПромСтр,Ккк) + """;"); + // иначе + // //Сообщить("|" + СтрПолучитьСтроку(ПромСтр,Ккк)); + // ДобавитьСтрокуКода(ТаблицаКода,"|" + СтрПолучитьСтроку(ПромСтр,Ккк)); + // КонецЕсли; + //КонецЦикла; + //Если ИмяКонстанты <> "" Тогда + // ДобавитьСтрокуКода(ТаблицаКода,"Константы." + ИмяКонстанты + ".Установить(" + "Стр" + ");"); + //КонецЕсли; + КонецЕсли; + + //Возврат "ОбработкаВнутриАлгоритма"; + + ИначеЕсли ТипЗначения = Тип("Число") Тогда + Возврат СтрЗаменить(СтрЗаменить(Значение,",","."),Символы.НПП,""); + + ИначеЕсли ТипЗначения = Тип("Булево") Тогда + Если Значение Тогда + Возврат "Истина"; + Иначе + Возврат "Ложь"; + КонецЕсли; + ИначеЕсли ТипЗначения = Тип("Дата") Тогда + //Возврат "'" + Формат(Значение,"ДФ=yyyyMMdd") + Формат(Значение,"ДФ=HHmmss") + "'"; + Возврат ПолучитьДатуСтрокой(Значение); + + ИначеЕсли Справочники.ТипВсеСсылки().СодержитТип(ТипЗначения) Тогда + ИмяМетаданного = Значение.Метаданные().Имя; + ДлинаКода = Значение.Метаданные().ДлинаКода; + ДлинаНаименования = Значение.Метаданные().ДлинаНаименования; + + ДобавитьОбъектВТаблицу(ТаблицаСправочников,Значение,"Справочник",ИмяМетаданного); + + Если ДлинаКода > 0 Тогда + Если Значение.Метаданные().ТипКода = Метаданные.СвойстваОбъектов.ТипКодаСправочника.Число Тогда + Возврат "ПолучитьСправочникПоРеквизиту(""" + ИмяМетаданного + """,""Код""," + СтрЗаменить(СокрЛП(Значение.Код),Символы.НПП,"") + ")"; + Иначе + Возврат "ПолучитьСправочникПоРеквизиту(""" + ИмяМетаданного + """,""Код"",""" + СокрЛП(Значение.Код) + """)"; + КонецЕсли; + ИначеЕсли ДлинаНаименования > 0 Тогда + Возврат "ПолучитьСправочникПоРеквизиту(""" + ИмяМетаданного + """,""Наименование"",""" + СокрЛП(Значение.Наименование) + """)"; + Иначе + Возврат Неопределено; + //Сообщить("//Константа " + Имя + ". Не смог определить как заплонять значение."); + КонецЕсли; + ИначеЕсли Документы.ТипВсеСсылки().СодержитТип(ТипЗначения) Тогда + ИмяМетаданного = Значение.Метаданные().Имя; + ТипНомера = Значение.Метаданные().ТипНомера; + ДлинаНомера = Значение.Метаданные().ДлинаНомера; + Если ДлинаНомера > 0 Тогда + Если Значение.Метаданные().ТипНомера = Метаданные.СвойстваОбъектов.ТипНомераДокумента.Число Тогда + Возврат "ПолучитьДокументПоНомеру(""" + ИмяМетаданного + """," + СтрЗаменить(СокрЛП(Значение.Номер),Символы.НПП,"") + "," + ПолучитьДатуСтрокой(Значение.Дата) + ")"; + Иначе + Возврат "ПолучитьДокументПоНомеру(""" + ИмяМетаданного + """,""" + СокрЛП(Значение.Номер) + """," + ПолучитьДатуСтрокой(Значение.Дата) + ")"; + КонецЕсли; + Иначе + Возврат "ПолучитьДокументПоНомеру(""" + ИмяМетаданного + """,""" + "" + """," + ПолучитьДатуСтрокой(Значение.Дата) + ")"; + //Сообщить("//Константа " + Имя + ". Не смог определить как заплонять значение."); + КонецЕсли; + ИначеЕсли Перечисления.ТипВсеСсылки().СодержитТип(ТипЗначения) Тогда + ИмяМетаданного = Значение.Метаданные().Имя; + ИндексЗначенияПеречисления = Перечисления[ИмяМетаданного].Индекс(Значение); + ИмяЗначенияПеречисления = Метаданные.Перечисления[ИмяМетаданного].ЗначенияПеречисления[ИндексЗначенияПеречисления].Имя; + + Возврат "Перечисления." + ИмяМетаданного + "." + ИмяЗначенияПеречисления; + ИначеЕсли ТипЗначения = Тип("ХранилищеЗначения") Тогда + ЗначениеИзХранилища = Значение.Получить(); + Если ЗначениеИзХранилища = Неопределено Тогда + Возврат Неопределено; + КонецЕсли; + + ТипЗначенияИзХранилища = ТипЗнч(ЗначениеИзХранилища); + Если ТипЗначенияИзХранилища = Тип("Структура") Тогда + Если ЗначениеИзХранилища.Количество() = 0 Тогда + Возврат Неопределено; + КонецЕсли; + Возврат ПолучитьСтрокуДляСтруктуры(ЗначениеИзХранилища,ТаблицаСправочников,ТаблицаКода); + ИначеЕсли ТипЗначенияИзХранилища = Тип("СписокЗначений") Тогда + Если ЗначениеИзХранилища.Количество() = 0 Тогда + Возврат Неопределено; + КонецЕсли; + Возврат ПолучитьСтрокуДляСпискаЗначений(ЗначениеИзХранилища,ТаблицаСправочников,ТаблицаКода); + ИначеЕсли ТипЗначенияИзХранилища = Тип("ТаблицаЗначений") Тогда + Если ЗначениеИзХранилища.Количество() = 0 Тогда + Возврат Неопределено; + КонецЕсли; + Возврат ПолучитьСтрокуДляТаблицыЗначений(ЗначениеИзХранилища,ТаблицаСправочников,ТаблицаКода); + ИначеЕсли ТипЗначенияИзХранилища = Тип("Соответствие") Тогда + Если ЗначениеИзХранилища.Количество() = 0 Тогда + Возврат Неопределено; + КонецЕсли; + Возврат ПолучитьСтрокуДляСоответствия(ЗначениеИзХранилища,ТаблицаСправочников,ТаблицаКода); + КонецЕсли; + + //Сообщить("ХранилищеЗначения"); + //ПолучитьСтрокуКодаДляЗначения(ЗначениеИзХранилища,Имя) + Если ИмяКонстанты <> "" Тогда + //Сообщить("//Здесь надо заполнить константу " + ИмяКонстанты + " в которой хранилище значения. ТипЗначенияИзХранилища="+ТипЗначенияИзХранилища); + ДобавитьСтрокуКода(ТаблицаКода,"//Здесь надо заполнить константу " + ИмяКонстанты + " в которой хранилище значения. ТипЗначенияИзХранилища="+ТипЗначенияИзХранилища); + КонецЕсли; + Возврат Неопределено; + + + ИначеЕсли ТипЗначения = Тип("Структура") Тогда + Возврат ПолучитьСтрокуДляСтруктуры(Значение,ТаблицаСправочников,ТаблицаКода,Истина); + ИначеЕсли ТипЗначения = Тип("СписокЗначений") Тогда + Возврат ПолучитьСтрокуДляСпискаЗначений(Значение,ТаблицаСправочников,ТаблицаКода,Истина); + ИначеЕсли ТипЗначения = Тип("Соответствие") Тогда + Возврат ПолучитьСтрокуДляСоответствия(Значение,ТаблицаСправочников,ТаблицаКода,Истина); + ИначеЕсли ТипЗначения = Тип("ТаблицаЗначений") Тогда + Возврат ПолучитьСтрокуДляТаблицыЗначений(Значение,ТаблицаСправочников,ТаблицаКода,Истина); + Иначе + //Сообщить("//Здесь надо установить значение для константы """ + Имя + """. ТипЗначения="+ТипЗначения); + Если ИмяКонстанты = "" Тогда //значит это подчиненное значение, которое имеет сложный тип, например в таблце значений внутри были структуры + + КонецЕсли; + Возврат Неопределено; + КонецЕсли; +КонецФункции + +Процедура ДобавитьСтрокуКода(ТаблицаКода,Стр,ДобавитьТаб = Истина) + СтрТаблицаКода = ТаблицаКода.Добавить(); + Если ДобавитьТаб Тогда + СтрТаблицаКода.СтрокаКода = Символы.Таб + Стр; + Иначе + СтрТаблицаКода.СтрокаКода = Стр; + КонецЕсли; +КонецПроцедуры + +Процедура ПолучитьСтрокуКодаДляЗначения(Значение,Имя, ТаблицаСправочниковДляПолученияМакетовFixtures, ТаблицаКода) + ТипЗначения = ТипЗнч(Значение); + + СтрокаДляЗначения = ПолучитьСтрокуДляЗначения(Значение,Имя,ТаблицаСправочниковДляПолученияМакетовFixtures,ТаблицаКода); + Если СтрокаДляЗначения = Неопределено Тогда + //ДобавитьСтрокуКода(ТаблицаКода,); + //Сообщить("//Здесь надо установить значение для константы """ + Имя + """. ТипЗначения="+ТипЗначения); + ДобавитьСтрокуКода(ТаблицаКода,"//Здесь надо установить значение для константы """ + Имя + """. ТипЗначения="+ТипЗначения); + ИначеЕсли ТипЗначения = Тип("ХранилищеЗначения") Тогда + //Сообщить("Константы." + Имя + ".Установить(" + "ОбъектДляХранилищаЗначения" + ");"); + //Сообщить(" "); + ДобавитьСтрокуКода(ТаблицаКода,"Константы." + Имя + ".Установить(" + "ХранилищеЗначения" + ");"); + ДобавитьСтрокуКода(ТаблицаКода," "); + ИначеЕсли СтрокаДляЗначения = "ОбработкаВнутриАлгоритма" тогда + //значит уже всё сделано + Иначе + //Сообщить("Константы." + Имя + ".Установить(" + СтрокаДляЗначения + ");"); + //Сообщить(" "); + ДобавитьСтрокуКода(ТаблицаКода,"Константы." + Имя + ".Установить(" + СтрокаДляЗначения + ");"); + ДобавитьСтрокуКода(ТаблицаКода," "); + КонецЕсли; + + //Если ТипЗначения = Тип("Строка") Тогда + // Сообщить("Константы." + Имя + ".Установить(""" + Значение + """);"); + //ИначеЕсли ТипЗначения = Тип("Число") Тогда + // Сообщить("Константы." + Имя + ".Установить(" + СтрЗаменить(Значение,",",".") + ");"); + //ИначеЕсли ТипЗначения = Тип("Булево") Тогда + // Если Значение Тогда + // Сообщить("Константы." + Имя + ".Установить(" + "Истина" + ");"); + // Иначе + // Сообщить("Константы." + Имя + ".Установить(" + "Ложь" + ");"); + // КонецЕсли; + //ИначеЕсли ТипЗначения = Тип("Дата") Тогда + // Сообщить("Константы." + Имя + ".Установить('" + Формат(Значение,"ДФ=yyyyMMdd") + Формат(Значение,"ДФ=HHmmss") + "');"); + //ИначеЕсли Справочники.ТипВсеСсылки().СодержитТип(ТипЗначения) Тогда + // ИмяМетаданного = Значение.Метаданные().Имя; + // ДлинаКода = Значение.Метаданные().ДлинаКода; + // ДлинаНаименования = Значение.Метаданные().ДлинаНаименования; + // Если ДлинаКода > 0 Тогда + // Если Значение.Метаданные().ТипКода = Метаданные.СвойстваОбъектов.ТипКодаСправочника.Число Тогда + // Сообщить("Константы." + Имя + ".Установить(ПолучитьСправочникПоРеквизиту(""" + ИмяМетаданного + """,""Код""," + Значение.Код + "));"); + // Иначе + // Сообщить("Константы." + Имя + ".Установить(ПолучитьСправочникПоРеквизиту(""" + ИмяМетаданного + """,""Код"",""" + Значение.Код + """));"); + // КонецЕсли; + // ИначеЕсли ДлинаНаименования > 0 Тогда + // Сообщить("Константы." + Имя + ".Установить(ПолучитьСправочникПоРеквизиту(""" + ИмяМетаданного + """,""Наименование"",""" + Значение.Наименование + """));"); + // Иначе + // Сообщить("//Константа " + Имя + ". Не смог определить как заплонять значение."); + // КонецЕсли; + //ИначеЕсли Перечисления.ТипВсеСсылки().СодержитТип(ТипЗначения) Тогда + // ИмяМетаданного = Значение.Метаданные().Имя; + // ИндексЗначенияПеречисления = Перечисления[ИмяМетаданного].Индекс(Значение); + // ИмяЗначенияПеречисления = Метаданные.Перечисления[ИмяМетаданного].ЗначенияПеречисления[ИндексЗначенияПеречисления].Имя; + // Сообщить("Константы." + Имя + ".Установить(Перечисления." + ИмяМетаданного + "." + ИмяЗначенияПеречисления + ");"); + //ИначеЕсли ТипЗначения = Тип("ХранилищеЗначения") Тогда + // ЗначениеИзХранилища = Значение.Получить(); + // Если ЗначениеИзХранилища = Неопределено Тогда + // Сообщить("//Константа " + Имя + " была не заполнена."); + // Возврат; + // КонецЕсли; + // + // Сообщить("ХранилищеЗначения"); + // ПолучитьСтрокуКодаДляЗначения(ЗначениеИзХранилища,Имя) + //Иначе + // Сообщить("//Здесь надо установить значение для константы """ + Имя + """. ТипЗначения="+ТипЗначения); + //КонецЕсли; +КонецПроцедуры + +Процедура СгенерироватьКодДляЗаполненияКонстант(ТаблицаКода,ТаблицаСправочниковДляПолученияМакетовFixtures) + МассивКонстантДляОбработки = ПолучитьМассивКонстантДляОбработки(); + //Сообщить("//код для вставки"); + ДобавитьСтрокуКода(ТаблицаКода,"Процедура ЗаполнениеКонстант() Экспорт",Ложь); + ДобавитьСтрокуКода(ТаблицаКода,"Сообщить(""Устанавливаю значения констант"");"); + Для каждого Элем Из МассивКонстантДляОбработки Цикл + ОбработкаПрерыванияПользователя(); + + Имя = Элем; + + Состояние("Константы." + Имя); + + Значение = Константы[Имя].Получить(); + Если НЕ ЗначениеЗаполнено(Значение) Тогда + Сообщить("//Константа " + Имя + " была не заполнена."); + ДобавитьСтрокуКода(ТаблицаКода,"//Константа " + Имя + " была не заполнена."); + Продолжить; + КонецЕсли; + + + ТипЗначения = ТипЗнч(Значение); + Если ТипЗначения = Тип("ХранилищеЗначения") Тогда + ЗначениеИзХранилища = Значение.Получить(); + Если ЗначениеИзХранилища = Неопределено Тогда + Сообщить("//Константа " + Имя + " была не заполнена."); + ДобавитьСтрокуКода(ТаблицаКода,"//Константа " + Имя + " была не заполнена."); + Продолжить; + КонецЕсли; + КонецЕсли; + + ПолучитьСтрокуКодаДляЗначения(Значение,Имя,ТаблицаСправочниковДляПолученияМакетовFixtures,ТаблицаКода); + + Если ТестовыйРежим Тогда + Сообщить("ВКЛЮЧЕН ТЕСТОВЫЙ РЕЖИМ!!! ВЫГРУЖЕНЫ НЕ ВСЕ КОНСТАНТЫ!"); + Прервать; + КонецЕсли; + + //Сообщить("ПОТОМ УБРАТЬ!!! В СгенерироватьКодДляЗаполненияКонстант"); + //Прервать; + КонецЦикла; + ДобавитьСтрокуКода(ТаблицаКода,"КонецПроцедуры",Ложь); +КонецПроцедуры + + +Процедура СгенерироватьКодДляСозданияFixturesСправочниковПоМакетам(ТаблицаКода,МассивМакетовСправочниковДляВставки) + ДобавитьСтрокуКода(ТаблицаКода," ",Ложь); + ДобавитьСтрокуКода(ТаблицаКода,"Процедура СоздатьFixturesСправочниковПоМакетам() Экспорт",Ложь); + Для каждого Элем Из МассивМакетовСправочниковДляВставки Цикл + ДобавитьСтрокуКода(ТаблицаКода,"СоздатьFixturesПоМакету(""" + Элем.ИмяМакета + """); //Загружено элементов " + Элем.ПолученоЭлементов); + КонецЦикла; + ДобавитьСтрокуКода(ТаблицаКода,"КонецПроцедуры",Ложь); +КонецПроцедуры + +Процедура СгенерироватьКодДляСозданияFixturesРСПоМакетам(ТаблицаКода,МассивМакетовРСДляВставки) + ДобавитьСтрокуКода(ТаблицаКода," ",Ложь); + ДобавитьСтрокуКода(ТаблицаКода,"Процедура СоздатьFixturesРСПоМакетам() Экспорт",Ложь); + Для каждого Элем Из МассивМакетовРСДляВставки Цикл + ДобавитьСтрокуКода(ТаблицаКода,"СоздатьFixturesПоМакету(""" + Элем.ИмяМакета + """);"); + КонецЦикла; + ДобавитьСтрокуКода(ТаблицаКода,"КонецПроцедуры",Ложь); +КонецПроцедуры + +Процедура СгенерироватьКодСОсновнымиПроцедурами(ТаблицаКода) + ДобавитьСтрокуКода(ТаблицаКода," ",Ложь); + ДобавитьСтрокуКода(ТаблицаКода,"Процедура СделатьНачальноеЗаполнениеБазы() Экспорт",Ложь); + ДобавитьСтрокуКода(ТаблицаКода,"Сообщить(""Начало обработки:"" + ТекущаяДата());"); + ДобавитьСтрокуКода(ТаблицаКода,"СоздатьFixturesСправочниковПоМакетам();"); + ДобавитьСтрокуКода(ТаблицаКода,"ЗаполнениеКонстант();"); + ДобавитьСтрокуКода(ТаблицаКода,"СоздатьFixturesРСПоМакетам();"); + ДобавитьСтрокуКода(ТаблицаКода,"Сообщить(""Окончание обработки:"" + ТекущаяДата());"); + ДобавитьСтрокуКода(ТаблицаКода,"КонецПроцедуры",Ложь); +КонецПроцедуры + +Процедура ДобавитьСправочникВВыгрузку(ТаблицаОбъектов,ИмяСпр,СколькоВыгружать,ПорогДляПолннойВыгрузки) + Запрос = Новый Запрос; + Запрос.Текст = + "ВЫБРАТЬ + | КОЛИЧЕСТВО(__ИмяСпр__.Ссылка) КАК КолЭлементов + |ИЗ + | Справочник.__ИмяСпр__ КАК __ИмяСпр__"; + + Запрос.Текст = СтрЗаменить(Запрос.Текст,"__ИмяСпр__",ИмяСпр); + РезультатЗапроса = Запрос.Выполнить(); + + ВыборкаДетальныеЗаписи = РезультатЗапроса.Выбрать(); + + КолЭлементовВсего = 0; + Пока ВыборкаДетальныеЗаписи.Следующий() Цикл + КолЭлементовВсего = ВыборкаДетальныеЗаписи.КолЭлементов; + КонецЦикла; + + СколькоБудемВыгружать = СколькоВыгружать; + Если КолЭлементовВсего <= ПорогДляПолннойВыгрузки Тогда + СколькоБудемВыгружать = КолЭлементовВсего; + КонецЕсли; + + + Сообщить("Добавляю в выгрузку справочник: " + ИмяСпр + ". Всего элементов " + КолЭлементовВсего + ". Выгружаю " + СколькоБудемВыгружать + " элементов."); + + + + Запрос = Новый Запрос; + Запрос.Текст = + "ВЫБРАТЬ ПЕРВЫЕ МаксЧислоЭлементов + | __ИмяСпр__.Ссылка КАК Ссылка + |ИЗ + | Справочник.__ИмяСпр__ КАК __ИмяСпр__ + | ГДЕ НЕ ПометкаУдаления И НЕ Предопределенный + |"; + + Запрос.Текст = СтрЗаменить(Запрос.Текст,"__ИмяСпр__",ИмяСпр); + Запрос.Текст = СтрЗаменить(Запрос.Текст,"МаксЧислоЭлементов",СтрЗаменить(СколькоБудемВыгружать,Символы.НПП,"")); + РезультатЗапроса = Запрос.Выполнить(); + + + ВыборкаДетальныеЗаписи = РезультатЗапроса.Выбрать(); + Пока ВыборкаДетальныеЗаписи.Следующий() Цикл + СтрТаблицаОбъектов = ТаблицаОбъектов.Добавить(); + СтрТаблицаОбъектов.Объект = ВыборкаДетальныеЗаписи.Ссылка; + СтрТаблицаОбъектов.Тип = "Справочник"; + СтрТаблицаОбъектов.Вид = ИмяСпр; + КонецЦикла; +КонецПроцедуры + +Процедура ДобавитьВВыгрузкуСправочники(ТаблицаОбъектов) + Для каждого Элем Из Метаданные.Справочники Цикл + ЭлементСписка = СписокВидовСправочниковКоторыеНеНадоВыгружать.НайтиПоЗначению(Элем.Имя); + Если ЭлементСписка <> Неопределено Тогда + Сообщить("Справочник " + Элем.Имя + " не будет выгружен, т.к. он добавлен в список невыгружаемых объектов."); + Продолжить; + КонецЕсли; + + Если ТестовыйРежим Тогда + Сообщить("ВКЛЮЧЕН ТЕСТОВЫЙ РЕЖИМ!!! ВЫГРУЖЕНЫ НЕ ВСЕ СПРАВОЧНИКИ!"); + Прервать; + КонецЕсли; + + //Сообщить("Добавляю в выгрузку справочник: " + Элем.Имя); + ДобавитьСправочникВВыгрузку(ТаблицаОбъектов,Элем.Имя,СколькоВыгружатьЭлементаСправочника,ПорогДляПолннойВыгрузкиСправочника); + КонецЦикла; + + //ПорогДляПолннойВыгрузкиСправочника +КонецПроцедуры + +Процедура ПолучитьОтчетПоМакетам(МассивМакетовСправочниковДляВставки,КоментарийОтчета) + ТаблицаОтчетПоМакетам = Новый ТаблицаЗначений; + ТаблицаОтчетПоМакетам.Колонки.Добавить("ИмяМакета"); + ТаблицаОтчетПоМакетам.Колонки.Добавить("КолСтрок"); + Для каждого Элем Из МассивМакетовСправочниковДляВставки Цикл + Макет = Элем.Макет; + КолСтрок = Макет.ВысотаТаблицы; + + + СтрТаблицаОтчетПоМакетам = ТаблицаОтчетПоМакетам.Добавить(); + СтрТаблицаОтчетПоМакетам.ИмяМакета = Элем.ИмяМакета; + СтрТаблицаОтчетПоМакетам.КолСтрок = КолСтрок; + КонецЦикла; + + ТаблицаОтчетПоМакетам.Сортировать("КолСтрок убыв,ИмяМакета"); + //ТаблицаОтчетПоМакетам.ВыбратьСтроку(); + + + ПечДок = Новый ТабличныйДокумент; + МакетОтчетПоМакетам = ПолучитьМакет("ОтчетПоМакетам"); + + ОбластьШапка = МакетОтчетПоМакетам.ПолучитьОбласть("Шапка"); + ОбластьСтрока = МакетОтчетПоМакетам.ПолучитьОбласть("Строка"); + + ПечДок.Вывести(ОбластьШапка); + + Для каждого СтрТаблицаОтчетПоМакетам Из ТаблицаОтчетПоМакетам Цикл + ОбластьСтрока.Параметры.Заполнить(СтрТаблицаОтчетПоМакетам); + ПечДок.Вывести(ОбластьСтрока); + КонецЦикла; + + ПечДок.Показать("Отчет по сгенерированным макетам. " + КоментарийОтчета + "."); +КонецПроцедуры + +Функция ПолучитьКоличествоЗаписейВРС(ИмяРС) + Запрос = Новый Запрос; + Запрос.Текст = + "ВЫБРАТЬ + | КОЛИЧЕСТВО(*) КАК КолЗаписей + |ИЗ + | РегистрСведений.__РС__ КАК __РС__"; + + Запрос.Текст = СтрЗаменить(Запрос.Текст,"__РС__",ИмяРС); + РезультатЗапроса = Запрос.Выполнить(); + ВыборкаДетальныеЗаписи = РезультатЗапроса.Выбрать(); + + Пока ВыборкаДетальныеЗаписи.Следующий() Цикл + Возврат ВыборкаДетальныеЗаписи.КолЗаписей; + КонецЦикла; + + Возврат 0; +КонецФункции + +Функция ПолучитьМакетДляВидаРС(Вид,ИмяМакета) + + ГенераторFixtures = ВнешниеОбработки.Создать(ПутьКГенераторуFixtures); + ФормаГенератора = ГенераторFixtures.ПолучитьФорму("Форма"); + ФормаГенератора.Открыть(); + ГенераторFixtures.ВыгружатьКод = Истина; + ГенераторFixtures.ОбменДанными = Истина; + + ДеревоМетаданных = ГенераторFixtures.ДеревоМетаданных; + //ДеревоМетаданных.ВыбратьСтроку(); + + ВеткаДерева = ДеревоМетаданных.Строки[0].Строки[2]; + //Для каждого СтрокаДерева Из ВеткаСправочников.Строки Цикл + // Сообщить("" + СтрокаДерева.ПолноеИмяМетаданных); + //КонецЦикла; + НужнаяСтрокаДерева = ВеткаДерева.Строки.Найти(Вид,"ПолноеИмяМетаданных"); + Если НужнаяСтрокаДерева = Неопределено Тогда + Сообщить("Не найдена строка РС в дереве. Вид="+вид); + Возврат Неопределено; + КонецЕсли; + + + НужнаяСтрокаДерева.Выгружать = Истина; + НужнаяСтрокаДерева.ИспользоватьОтбор = Истина; + + + + ФормаГенератора.ЭлементыФормы.ДеревоМетаданных.ТекущаяСтрока = НужнаяСтрокаДерева; + //ФормаГенератора.ДеревоМетаданныхПриАктивизацииСтроки(""); + + + Макет = Новый ТабличныйДокумент; + Макет.Прочитать(ПутьУПустомуПравильномуМакету); + ГенераторFixtures.СоздатьМакетДанныхПоМетаданным(Макет); + + ИмяМакета = "РС_" + Вид; + Макет.Показать(ИмяМакета); + + ФормаГенератора.Закрыть(); + ГенераторFixtures = Неопределено; + + Сообщить("Получено " + Макет.ВысотаТаблицы + " строк."); + + Возврат Макет; + +КонецФункции + +Процедура ПолучитьFixturesДляРС(МассивМакетовРСДляВставки) + Для каждого Элем Из Метаданные.РегистрыСведений Цикл + Имя = Элем.Имя; + Если Элем.РежимЗаписи <> Метаданные.СвойстваОбъектов.РежимЗаписиРегистра.Независимый Тогда + Продолжить; + КонецЕсли; + + ЭлементСписка = СписокВидовРСоторыеНеНадоВыгружать.НайтиПоЗначению(Имя); + Если ЭлементСписка <> Неопределено Тогда + Сообщить("РС " + Имя + " не будет выгружен, т.к. он добавлен в список невыгружаемых объектов."); + Продолжить; + КонецЕсли; + + Состояние("РС " + Имя); + + + Если Элем.Измерения.Количество() = 0 Тогда //такие РС xddDataFixtureGen не переваривает, хотя в типовых они встречаются + Сообщить("Не стал выгружать РС " + Имя + ", т.к. у него 0 измерений."); + Продолжить; + КонецЕсли; + + КоличествоЗаписейВРС = ПолучитьКоличествоЗаписейВРС(Имя); + Если КоличествоЗаписейВРС > ПорогДляПолннойВыгрузкиРС Тогда + Продолжить; + КонецЕсли; + Если КоличествоЗаписейВРС = 0 Тогда + Продолжить; + КонецЕсли; + + Сообщить("Выгружаю РС " + Имя + ", КоличествоЗаписей="+КоличествоЗаписейВРС); + + + ИмяМакета = ""; + Макет = ПолучитьМакетДляВидаРС(Имя,ИмяМакета); + //Сообщить("Получено " + Макет.ВысотаТаблицы + " строк."); + + + СтруктураМакета = Новый Структура; + СтруктураМакета.Вставить("Макет",Макет); + СтруктураМакета.Вставить("ИмяМакета",ИмяМакета); + + МассивМакетовРСДляВставки.Добавить(СтруктураМакета); + + + + Если ТестовыйРежим Тогда + Сообщить("ВКЛЮЧЕН ТЕСТОВЫЙ РЕЖИМ!!! ВЫГРУЖЕНЫ НЕ ВСЕ РС!"); + Прервать; + КонецЕсли; + //Сообщить("ПОТОМ УБРАТЬ!!!!!!!!!!!!!!!!!"); + //Прервать; + КонецЦикла; +КонецПроцедуры + +Процедура кнГенерацияДанных(Элемент) + Сообщить("НАЧАЛО ОБРАБОТКИ " + ТекущаяДата()); + СчетчикОбъектов = 0; + + ФайлМакета = Новый Файл(ПутьУПустомуПравильномуМакету); + Если Не ФайлМакета.Существует() Тогда + Сообщить("Файл макета " + ПутьУПустомуПравильномуМакету + " не найден!"); + Возврат; + КонецЕсли; + + ТаблицаСправочниковДляПолученияМакетовFixtures = Новый ТаблицаЗначений; + ТаблицаСправочниковДляПолученияМакетовFixtures.Колонки.Добавить("Объект"); + ТаблицаСправочниковДляПолученияМакетовFixtures.Колонки.Добавить("Тип"); + ТаблицаСправочниковДляПолученияМакетовFixtures.Колонки.Добавить("Вид"); + + ТаблицаКода = Новый ТаблицаЗначений; + ТаблицаКода.Колонки.Добавить("СтрокаКода"); + + //ГЕНЕРАЦИЯ КОДА ДЛЯ ЗАПОЛНЕНИЯ КОНСТАНТ + //Сообщить("ПОТОМ ВЕРНУТЬ!!! СгенерироватьКодДляЗаполненияКонстант"); + Если флагВыгружатьКонстанты Тогда + СгенерироватьКодДляЗаполненияКонстант(ТаблицаКода,ТаблицаСправочниковДляПолученияМакетовFixtures); + КонецЕсли; + + + + Если флагВыгружатьСправочники Тогда + ДобавитьВВыгрузкуСправочники(ТаблицаСправочниковДляПолученияМакетовFixtures); + КонецЕсли; + + //Сообщить("ПОТОМ ВЕРНУТЬ!!! ДобавитьВВыгрузкуСправочники"); + + + + + + + //ГЕНЕРАЦИЯ МАКЕТОВ + + ТаблицаСправочниковДляПолученияМакетовFixtures.Свернуть("Объект,Тип,Вид"); + ТаблицаСправочниковДляПолученияМакетовFixtures.Сортировать("Вид,Объект"); + + + //ТаблицаСправочниковДляПолученияМакетовFixtures.ВыбратьСтроку(); + Сообщить(" "); + + + МассивМакетовСправочниковДляВставки = Новый Массив; + //ДобавитьМассивмакетовОВОбработку(МассивМакетовСправочниковДляВставки,ПутьКОбработке); + + + //ГЕНЕРАЦИЯ FIXTURES ДЛЯ СПРАВОЧНИКОВ, КОТОРЫЕ БЫЛИ ПОЛУЧЕНЫ ОТ КОНСТАНТ И ПРОСТО СПРАВОЧНИКОВ + //Сообщить("ПОТОМ ВЕРНУТЬ!!! ПолучитьFixturesДляСправочников()"); + ПолучитьFixturesДляСправочников(ТаблицаСправочниковДляПолученияМакетовFixtures,МассивМакетовСправочниковДляВставки); + + + + + //ГЕНЕРАЦИЯ FIXTURES ДЛЯ РЕГИСТРОВ СВЕДЕНИЙ + МассивМакетовРСДляВставки = Новый Массив; + Если флагВыгружатьРС Тогда + ПолучитьFixturesДляРС(МассивМакетовРСДляВставки); + КонецЕсли; + + + + + + ПолучитьОтчетПоМакетам(МассивМакетовСправочниковДляВставки,"Справочники"); + ПолучитьОтчетПоМакетам(МассивМакетовРСДляВставки,"РС"); + + ПутьКОбработке = ПутьКШаблонуОбработки; + + + + + //ГЕНЕРАЦИЯ КОДА ДЛЯ СОЗДАНИЯ FIXTURES + СгенерироватьКодДляСозданияFixturesСправочниковПоМакетам(ТаблицаКода,МассивМакетовСправочниковДляВставки); + СгенерироватьКодДляСозданияFixturesРСПоМакетам(ТаблицаКода,МассивМакетовРСДляВставки); + СгенерироватьКодСОсновнымиПроцедурами(ТаблицаКода); + + + + + + ДобавитьМассивМакетовВОбработкуИКодМодуля(МассивМакетовСправочниковДляВставки,МассивМакетовРСДляВставки,ПутьКОбработке,ТаблицаКода); + + + Сообщить("ОКОНЧАНИЕ ОБРАБОТКИ " + ТекущаяДата()); + +КонецПроцедуры + + +Функция ПолучитьТаблицуВидовСправочников(ТаблицаОбъектов) + КопияТаблицы = ТаблицаОбъектов.Скопировать(); + + КопияТаблицы.Свернуть("Вид"); + КопияТаблицы.Сортировать("Вид"); + + Возврат КопияТаблицы; +КонецФункции + + +Функция ПолучитьМакетДляВидаСправочника(Вид,ВсяТаблицаОбъектов,ИмяМакета,ПолученоЭлементов) + Отбор = Новый Структура(); + Отбор.Вставить("Вид",Вид); + МассивСтрок = ВсяТаблицаОбъектов.НайтиСтроки(Отбор); + + //СтруктураПараметров = Новый Структура; + + МассивОбъектов = Новый Массив; + + Для каждого СтрокаСОбъектов Из МассивСтрок Цикл + //Сообщить("" + СтрокаСОбъектов.Объект + ", Вид="+СтрокаСОбъектов.Вид); + + //СтруктураОбъекта = Новый Структура; + //СтруктураОбъекта.Вставить("Объект",СтрокаСОбъектов.Объект); + //СтруктураОбъекта.Вставить("Вид",СтрокаСОбъектов.Вид); + + МассивОбъектов.Добавить(СтрокаСОбъектов.Объект); + + КонецЦикла; + + //СтруктураПараметров.Вставить("МассивОбъектов",МассивОбъектов); + + + + ГенераторFixtures = ВнешниеОбработки.Создать(ПутьКГенераторуFixtures); + ФормаГенератора = ГенераторFixtures.ПолучитьФорму("Форма"); + ФормаГенератора.Открыть(); + ГенераторFixtures.ВыгружатьКод = Истина; + ГенераторFixtures.ОбменДанными = Истина; + + ДеревоМетаданных = ГенераторFixtures.ДеревоМетаданных; + //ДеревоМетаданных.ВыбратьСтроку(); + + ВеткаСправочников = ДеревоМетаданных.Строки[0].Строки[0]; + //Для каждого СтрокаДерева Из ВеткаСправочников.Строки Цикл + // Сообщить("" + СтрокаДерева.ПолноеИмяМетаданных); + //КонецЦикла; + НужнаяСтрокаДерева = ВеткаСправочников.Строки.Найти(Вид,"ПолноеИмяМетаданных"); + Если НужнаяСтрокаДерева = Неопределено Тогда + Сообщить("Не найдена строка справочника в дереве. Вид="+вид); + Возврат Неопределено; + КонецЕсли; + + + НужнаяСтрокаДерева.Выгружать = Истина; + НужнаяСтрокаДерева.ИспользоватьОтбор = Истина; + + + + ФормаГенератора.ЭлементыФормы.ДеревоМетаданных.ТекущаяСтрока = НужнаяСтрокаДерева; + //ФормаГенератора.ДеревоМетаданныхПриАктивизацииСтроки(""); + + + ЭлементОтбора = ГенераторFixtures.КомпоновщикНастроекКомпоновкиДанных.Настройки.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных")); + ЭлементОтбора.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Ссылка"); + ЭлементОтбора.ВидСравнения = ВидСравненияКомпоновкиДанных.ВСписке; + + СпсЗначений = Новый СписокЗначений; + //СпсЗначений.ЗагрузитьЗначения(ВсяТаблицаОбъектов.ВыгрузитьКолонку("Объект")); + СпсЗначений.ЗагрузитьЗначения(МассивОбъектов); + ЭлементОтбора.ПравоеЗначение = СпсЗначений; + + ЭлементОтбора.Использование = Истина; + + НужнаяСтрокаДерева.НастройкиКомпоновщика = ГенераторFixtures.КомпоновщикНастроекКомпоновкиДанных.Настройки.Отбор; + + ПолученоЭлементов = СпсЗначений.Количество(); + Сообщить("Получаю fixtures для справочника " + Вид + ", в отборе " + ПолученоЭлементов + " элементов."); + + Макет = Новый ТабличныйДокумент; + Макет.Прочитать(ПутьУПустомуПравильномуМакету); + ГенераторFixtures.СоздатьМакетДанныхПоМетаданным(Макет); + + ИмяМакета = "Справочник_" + Вид; + Макет.Показать(ИмяМакета); + + ФормаГенератора.Закрыть(); + ГенераторFixtures = Неопределено; + + Сообщить("Получено " + Макет.ВысотаТаблицы + " строк."); + + Возврат Макет; + +КонецФункции + +Процедура ПолучитьFixturesДляСправочников(ТаблицаОбъектов,МассивМакетовСправочниковДляВставки) + + ФайлГенератораfixtures = Новый Файл(ПутьКГенераторуFixtures); + Если Не ФайлГенератораfixtures.Существует() Тогда + Сообщить("Не найден файл генератора Fixtures."); + Возврат; + КонецЕсли; + + + ТаблицаВидов = ПолучитьТаблицуВидовСправочников(ТаблицаОбъектов); + //ТаблицаВидов.ВыбратьСтроку(); + + Для каждого СтрТаблицаВидов Из ТаблицаВидов Цикл + ОбработкаПрерыванияПользователя(); + + Вид = СтрТаблицаВидов.Вид; + //Сообщить("Получаю fixtures для справочника " + Вид); + + ИмяМакета = ""; + ПолученоЭлементов = 0; + Макет = ПолучитьМакетДляВидаСправочника(Вид,ТаблицаОбъектов,ИмяМакета,ПолученоЭлементов); + //Сообщить("Получено " + Макет.ВысотаТаблицы + " строк."); + + + + СтруктураМакета = Новый Структура; + СтруктураМакета.Вставить("Макет",Макет); + СтруктураМакета.Вставить("ИмяМакета",ИмяМакета); + СтруктураМакета.Вставить("ПолученоЭлементов",ПолученоЭлементов); + + МассивМакетовСправочниковДляВставки.Добавить(СтруктураМакета); + + //Сообщить("ПОТОМ УБРАТь!!! ВЫГРУЖАЕТСЯ ТОЛЬКО ОДИН СПРАВОЧНИК!!!"); + //Прервать; + КонецЦикла; + + +КонецПроцедуры + +Процедура СделатьСообщение(Стр); + Сообщить(Стр); +КонецПроцедуры + +Процедура ВыполнитьКомандуОС(Стр) + КомандаСистемы(Стр); + //СистемнаяИнформация = Новый СистемнаяИнформация; + // + //Если (СистемнаяИнформация.ТипПлатформы = ТипПлатформы.Windows_x86) или (СистемнаяИнформация.ТипПлатформы = ТипПлатформы.Windows_x86_64) Тогда + // Попытка + // ИмяВременногоBAT = ПолучитьИмяВременногоФайла("cmd"); + // + // //ЗТ = Новый ЗаписьТекста(ИмяВременногоBAT,"UTF-8",,Истина); + // ЗТ = Новый ЗаписьТекста(ИмяВременногоBAT,"UTF-8",,Истина); + // ЗТ.ЗаписатьСтроку(Стр); + // ЗТ.Закрыть(); + // + // WshShell = Новый COMОбъект("WScript.Shell"); + // //Сообщить(Стр); + // WshShell.Run(ИмяВременногоBAT,7,-1); + // УдалитьФайлы(ИмяВременногоBAT); + // Исключение + // #Если Клиент Тогда + // КомандаСистемы(Стр); + // #КонецЕсли + // КонецПопытки; + //Иначе + // ВызватьИсключение "Команда системы реализована только под Windows."; + //КонецЕсли; + +КонецПроцедуры + + +Функция РаспаковатьEPF(ИмяФайла,КаталогРаспаковки) + ФайлПрекомит = Новый Файл(ПутьКPrecommit); + Если НЕ ФайлПрекомит.Существует() Тогда + Сообщить("Не найден каталог прекоммита!"); + Возврат Ложь; + КонецЕсли; + + + ГенерироватьУФ = Ложь; + КаталогИнструментов = ПутьКPrecommit; + ЭтоУФ = Ложь; + Попытка + + Файл = Новый Файл(ИмяФайла); + + //ИмяКаталогаДляИсходников = Файл.Путь + "Src"; + ИмяКаталогаДляИсходников = КаталогРаспаковки; + + Если ГенерироватьУФ Тогда + ПутьКФайлуМодуля = ИмяКаталогаДляИсходников + "\" + Файл.ИмяБезРасширения + "\Form\Форма\Форма.txt"; + Иначе + ПутьКФайлуМодуля = ИмяКаталогаДляИсходников + "\" + Файл.ИмяБезРасширения + "\ObjectModule.txt"; + КонецЕсли; + + + + //ИмяКаталогаДляИсходников = КаталогВременныхФайлов() + "\src"; + + + УдалитьФайлы(ИмяКаталогаДляИсходников + "\" + Файл.ИмяБезРасширения); + ФайлКаталогSrc = Новый Файл(ИмяКаталогаДляИсходников); + Если Не ФайлКаталогSrc.Существует() Тогда + СоздатьКаталог(ИмяКаталогаДляИсходников); + КонецЕсли; + + СтрокаРазборкиEpf = "python " + КаталогИнструментов + "\pyv8unpack.py """ + ИмяФайла + """ """ + ИмяКаталогаДляИсходников + """"; + СделатьСообщение("Делаю распаковку " + Файл.ПолноеИмя); + СделатьСообщение("Строка распаковки: " + СтрокаРазборкиEpf); + //КомандаСистемы(СтрокаРазборкиEpf,КаталогИнструментов); + ВыполнитьКомандуОС(СтрокаРазборкиEpf); + + + //Файл = Новый Файл(ПутьКФайлуМодуля); + //Если Не Файл.Существует() Тогда + // СделатьСообщение("Не найден файл после распаковки: " + ПутьКФайлуМодуля); + // Если ЭтоУФ Тогда + // СделатьСообщение("Возможно это обработка для обычных форм, а не для управляемых форм."); + // Иначе + // СделатьСообщение("Возможно это обработка для управляемых форм, а не для обычных форм."); + // КонецЕсли; + // Возврат Ложь; + //КонецЕсли; + + + Исключение + СделатьСообщение("Не смог распаковать " + ИмяФайла); + СделатьСообщение(ОписаниеОшибки()); + Возврат Ложь; + КонецПопытки; + + Возврат Истина; +КонецФункции + +Процедура УбратьЗаменитьЗапрещенныеСимволыИзСтроки(Стр) + Стр = СтрЗаменить(Стр,".","_"); + Стр = СтрЗаменить(Стр,",",""); + Стр = СтрЗаменить(Стр,":",""); + Стр = СтрЗаменить(Стр,";",""); + Стр = СтрЗаменить(Стр,"-","_"); + Стр = СтрЗаменить(Стр,"+",""); + //Стр = СтрЗаменить(Стр,"<",""); + //Стр = СтрЗаменить(Стр,">",""); +КонецПроцедуры + + +Процедура ЗаписатьМакетСПравильнымИменем(ИмяМакета,Макет,КаталогДляРаботы,ИДМакета) + УбратьЗаменитьЗапрещенныеСимволыИзСтроки(ИмяМакета); + + УИД = Новый УникальныйИдентификатор; + //Сообщить("ПРОИСХОДИТ ПОДМЕНА УИД!!! ПОТОМ УБРАТЬ!!!"); + //УИД = "7a3e66f5-c873-4e1b-9d97-2c5359d503a9"; + УИД = СокрЛП(УИД); + + ИДМакета = УИД; + + ИмяФайлаОписанияМакета = КаталогДляРаботы + "\" + УИД; + + ЗТ = Новый ЗаписьТекста(ИмяФайлаОписанияМакета,"UTF-8",,Истина); + ЗТ.ЗаписатьСтроку("{1,"); + ЗТ.ЗаписатьСтроку("{2,0,"); + ЗТ.ЗаписатьСтроку("{1,"); + ЗТ.ЗаписатьСтроку("{0,0," + УИД + "},""" + ИмяМакета + ""","); + ЗТ.ЗаписатьСтроку("{1,""ru"",""" + ИмяМакета + """},"""",0,0}"); + ЗТ.ЗаписатьСтроку("},0}"); + + ЗТ.Закрыть(); + + //Сообщить("Записал описание макета " + ИмяФайлаОписанияМакета); + + + ФайлТелоМакета = КаталогДляРаботы + "\" + УИД + ".0"; + //Макет = Новый ТабличныйДокумент; + Макет.Записать(ФайлТелоМакета); +КонецПроцедуры + +Функция ПолучитьИмяФайлаRoot(КаталогДляРаботы) + + СтрокаВозврата = Неопределено; + + ИмяФайла = КаталогДляРаботы + "\root"; + ФайлПроверкаСуществования = Новый Файл(ИмяФайла); + Если НЕ ФайлПроверкаСуществования.Существует() Тогда + Сообщить("Файл " + ИмяФайла + " не существует!"); + Возврат Неопределено; + КонецЕсли; + + Текст = Новый ЧтениеТекста; + Текст.Открыть(ИмяФайла,"UTF-8"); + + Пока Истина Цикл + Стр = Текст.ПрочитатьСтроку(); + Если Стр = Неопределено Тогда + Прервать; + КонецЕсли; + + Стр = Сред(Стр,4); + Стр = Лев(Стр,СтрДлина(Стр)-2); + //Сообщить(Стр); + + СтрокаВозврата = Стр; + КонецЦикла; + + Текст.Закрыть(); + + + Возврат СтрокаВозврата; +КонецФункции + +Процедура ЗаписатьВФайлRootИДМакетов(ПутьКRoot,МассивМакетовСправочниковДляВставки) + Текст = Новый ЧтениеТекста; + Текст.Открыть(ПутьКRoot,"UTF-8"); + + ИмяВременногоФайла = ПолучитьИмяВременногоФайла("txt"); + ЗТ = Новый ЗаписьТекста(ИмяВременногоФайла,"UTF-8",,Истина); + + СтрокаДляИДМакетов = "{3daea016-69b7-4ed4-9453-127911372fe6,"; + + Пока Истина Цикл + Стр = Текст.ПрочитатьСтроку(); + Если Стр = Неопределено Тогда + Прервать; + КонецЕсли; + + Поз = Найти(Стр,СтрокаДляИДМакетов); + Если Поз > 0 Тогда + //это строка в которой лежат макеты + ПромСтр = СтрЗаменить(Стр,СтрокаДляИДМакетов,""); + Поз1 = Найти(ПромСтр,","); + Поз2 = Найти(ПромСтр,"}"); + Поз = Мин(Поз1,Поз2); + + ИдУжеСуществующихМакетов = ""; + + СтрТекКолМакетов = Лев(ПромСтр,Поз-1); + ТекКолМакетов = Число(СтрТекКолМакетов); + Если ТекКолМакетов > 0 Тогда + ИдУжеСуществующихМакетов = Сред(ПромСтр,Поз1); + ИдУжеСуществующихМакетов = Лев(ИдУжеСуществующихМакетов,СтрДлина(ИдУжеСуществующихМакетов)-2);//убрали }, + КонецЕсли; + НовоеЧислоМакетов = ТекКолМакетов + МассивМакетовСправочниковДляВставки.Количество(); + СтрНовоеЧислоМакетов = СтрЗаменить(Строка(НовоеЧислоМакетов),Символы.НПП,""); + + СтрокаДляИДМакетов = СтрокаДляИДМакетов + СтрНовоеЧислоМакетов + ИдУжеСуществующихМакетов; + Для каждого Элем Из МассивМакетовСправочниковДляВставки Цикл + ИдМакета = Элем.ИдМакета; + СтрокаДляИДМакетов = СтрокаДляИДМакетов + "," + ИдМакета; + КонецЦикла; + СтрокаДляИДМакетов = СтрокаДляИДМакетов + "},"; + + Стр = СтрокаДляИДМакетов; + КонецЕсли; + + ЗТ.ЗаписатьСтроку(Стр); + КонецЦикла; + + + + Текст.Закрыть(); + ЗТ.Закрыть(); + + //Сообщить("Записал " + ИмяВременногоФайла); + + КопироватьФайл(ИмяВременногоФайла,ПутьКRoot); + + +КонецПроцедуры + +Процедура ДобавитьСтрокиВФайлRenames(ПтуьКRenames,МассивМакетовСправочниковДляВставки) + ЗТ = Новый ЗаписьТекста(ПтуьКRenames,"UTF-8",,Истина); + + Для каждого Элем Из МассивМакетовСправочниковДляВставки Цикл + ЗТ.ЗаписатьСтроку(Элем.ИдМакета + "-->und\" + Элем.ИдМакета); + ЗТ.ЗаписатьСтроку(Элем.ИдМакета + ".0-->Макеты\" + Элем.ИмяМакета + ".mxl"); + ЗТ.ЗаписатьСтроку(Элем.ИдМакета + ".0-->und\" + Элем.ИдМакета + ".0"); + КонецЦикла; + + ЗТ.Закрыть(); + +КонецПроцедуры + +Процедура СкопироватьФайлыМакетовВСлужебныйКаталог(КудаСкопироватьМакеты,МассивМакетовСправочниковДляВставки) + ФайлПроверкаСуществования = Новый Файл(КудаСкопироватьМакеты); + Если НЕ ФайлПроверкаСуществования.Существует() Тогда + СоздатьКаталог(КудаСкопироватьМакеты); + КонецЕсли; + + + Для каждого Элем Из МассивМакетовСправочниковДляВставки Цикл + Макет = Элем.Макет; + //Макет = Новый ТабличныйДокумент; + Макет.Записать(КудаСкопироватьМакеты + "\" + Элем.ИмяМакета + ".mxl"); + КонецЦикла; +КонецПроцедуры + + +Процедура ДобавитьВМодульОбъектаОбработкиТаблицуКода(ПутькМодулюОбработки,ТаблицаКода) + ФайлПроверкаСуществования = Новый Файл(ПутькМодулюОбработки); + Если НЕ ФайлПроверкаСуществования.Существует() Тогда + Сообщить("Файл " + ПутькМодулюОбработки + " не существует!"); + Возврат; + КонецЕсли; + + ИмяВременногоФайла = ПолучитьИмяВременногоФайла("txt"); + + //скопируем то, что уже есть + КопироватьФайл(ПутькМодулюОбработки,ИмяВременногоФайла); + + + + + //ЗТ = Новый ЗаписьТекста(ИмяВременногоФайла,"UTF-8",,Истина); + ЗТ = Новый ЗаписьТекста; + ЗТ.Открыть(ИмяВременногоФайла,"UTF-8",,Истина); + Для каждого СтрТаблицаКода Из ТаблицаКода Цикл + ЗТ.ЗаписатьСтроку(СтрТаблицаКода.СтрокаКода); + КонецЦикла; + ЗТ.Закрыть(); + + + КопироватьФайл(ИмяВременногоФайла,ПутькМодулюОбработки); +КонецПроцедуры + +Процедура ЗаписатьСтрокуПодключенияКxUnitВМодульОбработки(ПутькМодулюОбработки) + ФайлПроверкаСуществования = Новый Файл(ПутькМодулюОбработки); + Если НЕ ФайлПроверкаСуществования.Существует() Тогда + Сообщить("Файл " + ПутькМодулюОбработки + " не существует!"); + Возврат; + КонецЕсли; + + ИмяВременногоФайла = ПолучитьИмяВременногоФайла("txt"); + + + ЗТ = Новый ЗаписьТекста; + ЗТ.Открыть(ИмяВременногоФайла,"UTF-8",,Истина); + + Текст = Новый ЧтениеТекста; + Текст.Открыть(ПутькМодулюОбработки,"UTF-8"); + + Пока Истина Цикл + Стр = Текст.ПрочитатьСтроку(); + Если Стр = Неопределено Тогда + Прервать; + КонецЕсли; + + Если Найти(Стр,"тут должно быть определено, как подключиться к xUnit") > 0 Тогда + Стр = СтрокаПодключенияКxUnit; + КонецЕсли; + + ЗТ.ЗаписатьСтроку(Стр); + КонецЦикла; + + Текст.Закрыть(); + ЗТ.Закрыть(); + + + КопироватьФайл(ИмяВременногоФайла,ПутькМодулюОбработки); +КонецПроцедуры + +Процедура ДобавитьМассивМакетовВОбработкуИКодМодуля(МассивМакетовСправочниковДляВставки,МассивМакетовРСДляВставки,ПутьКОбработке,ТаблицаКода) + ФайлОбработки = Новый Файл(ПутьКОбработке); + Если НЕ ФайлОбработки.Существует() Тогда + Сообщить("Файл " + ПутьКОбработке + " не найден."); + Возврат; + КонецЕсли; + + + + КаталогРаспаковки = "C:\Temp\111"; + //КаталогДляРаботы = ФайлОбработки.Путь + "Src\" + ФайлОбработки.ИмяБезРасширения + "\und"; + КаталогДляРаботы = КаталогРаспаковки + "\" + ФайлОбработки.ИмяБезРасширения + "\und"; + //ПутьКИсходникам = ФайлОбработки.Путь + "Src\" + ФайлОбработки.ИмяБезРасширения; + ПутьКИсходникам = КаталогРаспаковки + "\" + ФайлОбработки.ИмяБезРасширения; + КаталогИнструментов = ПутьКPrecommit; + + ИмяВременнойEPF = ПутьКГенерируемойEPF; + УдалитьФайлы(ИмяВременнойEPF); + + + + + //СтрокаСборкиEpf = "python " + КаталогИнструментов + "\pyv8unpack.py --compile """ + ПутьКИсходникам + """ """ + ИмяВременнойEPF + """"; + //Сообщить("СтрокаСборкиEpf="+СтрокаСборкиEpf); + //ВыполнитьКомандуОС(СтрокаСборкиEpf); + //Сообщить("ПОТОМ ВЕРНУТЬ СОЗДАНИЕ EPF С МАКЕТАМИ!!!!!!!!!!!!!!!"); + //Возврат; + + + Если НЕ РаспаковатьEPF(ПутьКОбработке, КаталогРаспаковки) Тогда + Возврат; + КонецЕсли; + + //Возврат; + + + //Для каждого Элем Из МассивМакетовСправочниковДляВставки Цикл + // ИмяМакета = Элем.ИмяМакета; + // УбратьЗаменитьЗапрещенныеСимволыИзСтроки(ИмяМакета); + // Элем.ИмяМакета = ИмяМакета; + //КонецЦикла; + + + //Возврат; + //Сообщить("ПОТОМ ВЕРНУТЬ РАСПАКОВКУ!!!!!!!!!!!!!!!"); + + + + + //СтрокаСборкиEpf = "python " + КаталогИнструментов + "\pyv8unpack.py --compile """ + ПутьКИсходникам + """ """ + ИмяВременнойEPF + """"; + //Сообщить("СтрокаСборкиEpf="+СтрокаСборкиEpf); + //ВыполнитьКомандуОС(СтрокаСборкиEpf); + //Сообщить("ПОТОМ ВЕРНУТЬ СОЗДАНИЕ EPF С МАКТАМИ!!!!!!!!!!!!!!!"); + //Возврат; + + + Для каждого Элем Из МассивМакетовСправочниковДляВставки Цикл + ИмяМакета = Элем.ИмяМакета; + Макет = Элем.Макет; + ИДМакета = ""; + ЗаписатьМакетСПравильнымИменем(ИмяМакета,Макет,КаталогДляРаботы,ИДМакета); + Элем.Вставить("ИДМакета",ИДМакета); + КонецЦикла; + + Для каждого Элем Из МассивМакетовРСДляВставки Цикл + ИмяМакета = Элем.ИмяМакета; + Макет = Элем.Макет; + ИДМакета = ""; + ЗаписатьМакетСПравильнымИменем(ИмяМакета,Макет,КаталогДляРаботы,ИДМакета); + Элем.Вставить("ИДМакета",ИДМакета); + КонецЦикла; + + + + ИмяФайлаRoot = ПолучитьИмяФайлаRoot(КаталогДляРаботы); + Если ИмяФайлаRoot = Неопределено Тогда + Сообщить("Не смог прочитать файл root."); + Возврат; + КонецЕсли; + + ПутьКRoot = КаталогДляРаботы + "\" + ИмяФайлаRoot; + ЗаписатьВФайлRootИДМакетов(ПутьКRoot,МассивМакетовСправочниковДляВставки); + ЗаписатьВФайлRootИДМакетов(ПутьКRoot,МассивМакетовРСДляВставки); + + ПтуьКRenames = ПутьКИсходникам + "\renames.txt"; + ДобавитьСтрокиВФайлRenames(ПтуьКRenames,МассивМакетовСправочниковДляВставки); + ДобавитьСтрокиВФайлRenames(ПтуьКRenames,МассивМакетовРСДляВставки); + + КудаСкопироватьМакеты = ПутьКИсходникам + "\Макеты"; + СкопироватьФайлыМакетовВСлужебныйКаталог(КудаСкопироватьМакеты,МассивМакетовСправочниковДляВставки); + СкопироватьФайлыМакетовВСлужебныйКаталог(КудаСкопироватьМакеты,МассивМакетовРСДляВставки); + + + + ПутькМодулюОбработки = ПутьКИсходникам + "\ObjectModule.txt"; + ЗаписатьСтрокуПодключенияКxUnitВМодульОбработки(ПутькМодулюОбработки); + Если ТаблицаКода <> Неопределено Тогда + ДобавитьВМодульОбъектаОбработкиТаблицуКода(ПутькМодулюОбработки,ТаблицаКода); + КонецЕсли; + + + + + СтрокаСборкиEpf = "python " + КаталогИнструментов + "\pyv8unpack.py --compile """ + ПутьКИсходникам + """ """ + ИмяВременнойEPF + """"; + Сообщить("СтрокаСборкиEpf="+СтрокаСборкиEpf); + + ВыполнитьКомандуОС(СтрокаСборкиEpf); + +КонецПроцедуры + + +Процедура ОсновныеДействияФормыТестРаспаковки(Кнопка) + МассивМакетовСправочниковДляВставки = Новый Массив; + ТД = Новый ТабличныйДокумент; + ТД.Прочитать("C:\Temp\Справочник.ШаблонПисем.mxl"); + + СтруктураМакета = Новый Структура; + СтруктураМакета.Вставить("Макет",ТД); + СтруктураМакета.Вставить("ИмяМакета","Справочник.ШаблонПисем"); + + МассивМакетовСправочниковДляВставки.Добавить(СтруктураМакета); + + ПутьКОбработке = "C:\Commons\Rep\vanessa-BaseInit\ШаблонОбработкиДляНачальногоЗаполнения.epf"; + + ПромМассив = Новый Массив; + ДобавитьМассивМакетовВОбработкуИКодМодуля(МассивМакетовСправочниковДляВставки,ПромМассив,ПутьКОбработке,Неопределено); + +КонецПроцедуры + + + +Процедура ВосстановитьНастройки() + Настройки = ХранилищеОбщихНастроек.Загрузить("vanessa-base-init"); + Если ТипЗнч(Настройки) = Тип("Структура") Тогда + Настройки.Свойство("ПутьКГенераторуFixtures", ПутьКГенераторуFixtures); + Настройки.Свойство("ПутьКPrecommit", ПутьКPrecommit); + Настройки.Свойство("ПутьУПустомуПравильномуМакету", ПутьУПустомуПравильномуМакету); + Настройки.Свойство("ПутьКШаблонуОбработки", ПутьКШаблонуОбработки); + Настройки.Свойство("ПутьКГенерируемойEPF", ПутьКГенерируемойEPF); + Настройки.Свойство("СколькоВыгружатьЭлементаСправочника", СколькоВыгружатьЭлементаСправочника); + Настройки.Свойство("ПорогДляПолннойВыгрузкиСправочника", ПорогДляПолннойВыгрузкиСправочника); + Настройки.Свойство("СписокВидовСправочниковКоторыеНеНадоВыгружать", СписокВидовСправочниковКоторыеНеНадоВыгружать); + Настройки.Свойство("СписокВидовРСоторыеНеНадоВыгружать", СписокВидовРСоторыеНеНадоВыгружать); + Настройки.Свойство("ПорогДляПолннойВыгрузкиРС", ПорогДляПолннойВыгрузкиРС); + Настройки.Свойство("флагВыгружатьКонстанты", флагВыгружатьКонстанты); + Настройки.Свойство("флагВыгружатьСправочники", флагВыгружатьСправочники); + Настройки.Свойство("флагВыгружатьРС", флагВыгружатьРС); + Настройки.Свойство("СтрокаПодключенияКxUnit", СтрокаПодключенияКxUnit); + Настройки.Свойство("ТестовыйРежим", ТестовыйРежим); + КонецЕсли; +КонецПроцедуры + +Процедура СохранитьНастройки() + Настройки = Новый Структура; + Настройки.Вставить("ПутьКГенераторуFixtures", ПутьКГенераторуFixtures); + Настройки.Вставить("ПутьКPrecommit", ПутьКPrecommit); + Настройки.Вставить("ПутьУПустомуПравильномуМакету", ПутьУПустомуПравильномуМакету); + Настройки.Вставить("ПутьКШаблонуОбработки", ПутьКШаблонуОбработки); + Настройки.Вставить("ПутьКГенерируемойEPF", ПутьКГенерируемойEPF); + Настройки.Вставить("СколькоВыгружатьЭлементаСправочника", СколькоВыгружатьЭлементаСправочника); + Настройки.Вставить("ПорогДляПолннойВыгрузкиСправочника", ПорогДляПолннойВыгрузкиСправочника); + Настройки.Вставить("СписокВидовСправочниковКоторыеНеНадоВыгружать", СписокВидовСправочниковКоторыеНеНадоВыгружать); + Настройки.Вставить("СписокВидовРСоторыеНеНадоВыгружать", СписокВидовРСоторыеНеНадоВыгружать); + Настройки.Вставить("ПорогДляПолннойВыгрузкиРС", ПорогДляПолннойВыгрузкиРС); + Настройки.Вставить("флагВыгружатьКонстанты", флагВыгружатьКонстанты); + Настройки.Вставить("флагВыгружатьСправочники", флагВыгружатьСправочники); + Настройки.Вставить("флагВыгружатьРС", флагВыгружатьРС); + Настройки.Вставить("СтрокаПодключенияКxUnit", СтрокаПодключенияКxUnit); + Настройки.Вставить("ТестовыйРежим", ТестовыйРежим); + ХранилищеОбщихНастроек.Сохранить("vanessa-base-init",, Настройки); +КонецПроцедуры + + + +Процедура ПриОткрытии() + ВосстановитьНастройки(); + + ЭтаФорма.Заголовок = "Создание обработки по созданию fixtures для начального заполнения базы. " + ПолучитьВерсиюОбработки(); + + //заполним настройки, если обработка открывается в первый раз - начало + Если ПутьКГенераторуFixtures = "" Тогда + ПутьКГенераторуFixtures = "C:\Commons\Rep\xUnitFor1C\xddDataFixtureGen.epf"; + КонецЕсли; + Если ПутьКPrecommit = "" Тогда + ПутьКPrecommit = "C:\Commons\Rep\vanessa-base-init\.git\hooks"; + КонецЕсли; + Если ПутьУПустомуПравильномуМакету = "" Тогда + ПутьУПустомуПравильномуМакету = "C:\Commons\Rep\vanessa-base-init\ПустойПравильныйМакет.mxl"; + КонецЕсли; + Если ПутьКШаблонуОбработки = "" Тогда + ПутьКШаблонуОбработки = "C:\Commons\Rep\vanessa-base-init\ШаблонОбработкиДляНачальногоЗаполнения.epf"; + КонецЕсли; + Если ПутьКГенерируемойEPF = "" Тогда + ПутьКГенерируемойEPF = "C:\Temp\111.epf"; + КонецЕсли; + Если СколькоВыгружатьЭлементаСправочника = 0 Тогда + СколькоВыгружатьЭлементаСправочника = 15; + КонецЕсли; + Если ПорогДляПолннойВыгрузкиСправочника = 0 Тогда + ПорогДляПолннойВыгрузкиСправочника = 50; + КонецЕсли; + Если ПорогДляПолннойВыгрузкиРС = 0 Тогда + ПорогДляПолннойВыгрузкиРС = 10; + КонецЕсли; + Если СтрокаПодключенияКxUnit = "" Тогда + СтрокаПодключенияКxUnit = " xUnit = ВнешниеОбработки.Создать(""C:\Commons\Rep\xUnitFor1C\xddTestRunner.epf"");"; + КонецЕсли; + //заполним настройки, если обработка открывается в первый раз - окончание +КонецПроцедуры + +Процедура ПриЗакрытии() + СохранитьНастройки(); +КонецПроцедуры + +//Сообщить("111 " + Метаданные.ОсновнойЯзык); +//Макет = Новый ТабличныйДокумент; +//Макет.Прочитать("c:\users\pautov\desktop\444.mxl"); +//Макет.Показать(); +//ыа = 1; +//Макет.КодЯзыкаМакета = Метаданные.ОсновнойЯзык.КодЯзыка; +//Макет.Показать(); +//Макет.Записать("c:\users\pautov\desktop\333.mxl"); +//ыва = 1; + +//Метаданные.ОсновнойЯзык.КодЯзыка + + + + + + diff --git "a/src/\320\241\320\276\320\267\320\264\320\260\320\275\320\270\320\265Fixtures\320\224\320\273\321\217\320\235\320\260\321\207\320\260\320\273\321\214\320\275\320\276\320\263\320\276\320\227\320\260\320\277\320\276\320\273\320\275\320\265\320\275\320\270\321\217\320\221\320\260\320\267\321\213/Form/\320\244\320\276\321\200\320\274\320\260\320\243\320\277\321\200/\320\244\320\276\321\200\320\274\320\260.txt" "b/src/\320\241\320\276\320\267\320\264\320\260\320\275\320\270\320\265Fixtures\320\224\320\273\321\217\320\235\320\260\321\207\320\260\320\273\321\214\320\275\320\276\320\263\320\276\320\227\320\260\320\277\320\276\320\273\320\275\320\265\320\275\320\270\321\217\320\221\320\260\320\267\321\213/Form/\320\244\320\276\321\200\320\274\320\260\320\243\320\277\321\200/\320\244\320\276\321\200\320\274\320\260.txt" new file mode 100644 index 0000000..8bcada0 --- /dev/null +++ "b/src/\320\241\320\276\320\267\320\264\320\260\320\275\320\270\320\265Fixtures\320\224\320\273\321\217\320\235\320\260\321\207\320\260\320\273\321\214\320\275\320\276\320\263\320\276\320\227\320\260\320\277\320\276\320\273\320\275\320\265\320\275\320\270\321\217\320\221\320\260\320\267\321\213/Form/\320\244\320\276\321\200\320\274\320\260\320\243\320\277\321\200/\320\244\320\276\321\200\320\274\320\260.txt" @@ -0,0 +1,96 @@ + +&НаКлиенте +Процедура ГенерацияДанных(Команда) + Результат = ГенерацияДанныхНаСервере(); + + Данные = ПолучитьИзВременногоХранилища(Результат); + + Текст = Новый ТекстовыйДокумент; + Текст.УстановитьТекст(Данные.Процедура); + Текст.Показать("Процедура"); + + Текст = Новый ТекстовыйДокумент; + Текст.УстановитьТекст(Данные.СписокТестов); + Текст.Показать("СписокТестов"); + + Для каждого ОписаниеМакета из Данные.МассивМакетов Цикл + Если СтрДлина(ОписаниеМакета.Макет.ПолучитьТекст()) > 3 Тогда + ОписаниеМакета.Макет.Показать(ОписаниеМакета.ИмяМакета); + КонецЕсли; + КонецЦикла; + +КонецПроцедуры + +&НаСервере +Функция ГенерацияДанныхНаСервере() + Результат = Новый Структура(); + Результат.Вставить("ТекстОписанияТестов", ""); + Результат.Вставить("ТекстПроцедурУстановитьКонстанты", ""); + + ОбъектНаСервере = РеквизитФормыВЗначение("Объект"); + + Если ВыгружатьКонстанты = Истина Тогда + + МассивКонстантИсключений = Новый Массив; + МассивКонстантИсключений.Добавить("ИдентификаторИнформационнойБазы"); + Данные = ОбъектНаСервере.СгенерироватьУстановкуКонстатнтxUnit(ПутьКГенераторуFixtures, МассивКонстантИсключений); + Возврат ПоместитьВоВременноеХранилище(Данные, ЭтаФорма.УникальныйИдентификатор); + + //Результат = + КонецЕсли; + +КонецФункции + +&НаКлиенте +Процедура ПутьКГенераторуFixturesНачалоВыбора(Элемент, ДанныеВыбора, СтандартнаяОбработка) + + ПараметрыВыбора = Новый Структура("Элемент", Элемент); + ПараметрыВыбора.Вставить("Значение", "ПутьКГенераторуFixtures"); + СтандартнаяОбработка = Ложь; + + Режим = РежимДиалогаВыбораФайла.Открытие; + ДиалогОткрытияФайла = Новый ДиалогВыбораФайла(Режим); + ДиалогОткрытияФайла.МножественныйВыбор = Ложь; + ДиалогОткрытияФайла.Фильтр = НСтр("en='External processing form files (*.epf, *.erf)|*.epf; *.erf'; ru='Файлы внешних обработок (*.epf, *.erf)|*.epf; *.erf'"); + ДиалогОткрытияФайла.Заголовок = НСтр("en='Choose an external processing form file'; ru='Выберите файл с внешней обработкой'"); + ДиалогОткрытияФайла.ПроверятьСуществованиеФайла = Истина; + ФайлКаталог = Новый Файл(ДанныеВыбора); Каталог = ?(ФайлКаталог.Существует(), ФайлКаталог.Путь, ""); + Если Не ПустаяСтрока(Каталог) Тогда + ДиалогОткрытияФайла.Каталог = Каталог; + КонецЕсли; + + Если ЕстьПоддержкаАсинхронныхВызовов Тогда + Оповещение = Вычислить("Новый ОписаниеОповещения(""ПослеВыбораФайла"", ЭтаФорма, ПараметрыВыбора)"); + ДиалогОткрытияФайла.Показать(Оповещение); + ИначеЕсли ДиалогОткрытияФайла.Выбрать() Тогда + ПослеВыбораФайла(ДиалогОткрытияФайла.ВыбранныеФайлы, ПараметрыВыбора); + КонецЕсли; + + +КонецПроцедуры + + +&НаКлиенте +Процедура ПослеВыбораФайла(ВыбранныеФайлы, ПараметрыВыбора) Экспорт + + Если ВыбранныеФайлы = Неопределено Тогда + Возврат; + КонецЕсли; + + Если ВыбранныеФайлы.Количество() > 0 Тогда + ЭтаФорма[ПараметрыВыбора.Значение] = ВыбранныеФайлы.Получить(0); + КонецЕсли; + +КонецПроцедуры + + + +&НаСервере +Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка) + + ЕстьПоддержкаАсинхронныхВызовов = Ложь; + Попытка + ЕстьПоддержкаАсинхронныхВызовов = Вычислить("Метаданные.РежимИспользованияСинхронныхВызововРасширенийИВнешнихКомпонент <> Метаданные.СвойстваОбъектов.РежимИспользованияСинхронныхВызововРасширенийИВнешнихКомпонент.Использовать"); + Исключение; КонецПопытки; + +КонецПроцедуры diff --git "a/src/\320\241\320\276\320\267\320\264\320\260\320\275\320\270\320\265Fixtures\320\224\320\273\321\217\320\235\320\260\321\207\320\260\320\273\321\214\320\275\320\276\320\263\320\276\320\227\320\260\320\277\320\276\320\273\320\275\320\265\320\275\320\270\321\217\320\221\320\260\320\267\321\213/ObjectModule.txt" "b/src/\320\241\320\276\320\267\320\264\320\260\320\275\320\270\320\265Fixtures\320\224\320\273\321\217\320\235\320\260\321\207\320\260\320\273\321\214\320\275\320\276\320\263\320\276\320\227\320\260\320\277\320\276\320\273\320\275\320\265\320\275\320\270\321\217\320\221\320\260\320\267\321\213/ObjectModule.txt" index 7c92f12..66aed4e 100644 --- "a/src/\320\241\320\276\320\267\320\264\320\260\320\275\320\270\320\265Fixtures\320\224\320\273\321\217\320\235\320\260\321\207\320\260\320\273\321\214\320\275\320\276\320\263\320\276\320\227\320\260\320\277\320\276\320\273\320\275\320\265\320\275\320\270\321\217\320\221\320\260\320\267\321\213/ObjectModule.txt" +++ "b/src/\320\241\320\276\320\267\320\264\320\260\320\275\320\270\320\265Fixtures\320\224\320\273\321\217\320\235\320\260\321\207\320\260\320\273\321\214\320\275\320\276\320\263\320\276\320\227\320\260\320\277\320\276\320\273\320\275\320\265\320\275\320\270\321\217\320\221\320\260\320\267\321\213/ObjectModule.txt" @@ -1,3 +1,542 @@ -Функция ПолучитьВерсиюОбработки() Экспорт - Возврат "ver 1.01"; -КонецФункции \ No newline at end of file +Перем СчетчикОбъектов; + +Функция ПолучитьСтрокуДляСтруктуры(Структура,ТаблицаСправочниковДляПолученияМакетовFixtures,ТаблицаКода,ВернутьИмяПеременной = Ложь) + + СчетчикОбъектов = СчетчикОбъектов + 1; + ИмяПеременной = " "+"Структура" + СчетчикОбъектов; + + ДобавитьСтрокуКода(ТаблицаКода," "); + ДобавитьСтрокуКода(ТаблицаКода,ИмяПеременной + " = Новый Структура;"); + + Для каждого Элем Из Структура Цикл + Ключ = Элем.Ключ; + Значение = Элем.Значение; + Если Значение = Неопределено Тогда + ДобавитьСтрокуКода(ТаблицаКода,ИмяПеременной + ".Вставить(""" + Ключ + """,Неопределено);"); + Продолжить; + КонецЕсли; + + СтрокаЗначения = ПолучитьСтрокуДляЗначения(Значение,"",ТаблицаСправочниковДляПолученияМакетовFixtures,ТаблицаКода); + Если СтрокаЗначения = Неопределено Тогда + СтрокаЗначения = "Неопределено"; + КонецЕсли; + ДобавитьСтрокуКода(ТаблицаКода,ИмяПеременной + ".Вставить(""" + Ключ + """," + СтрокаЗначения + ");"); + КонецЦикла; + + Если ВернутьИмяПеременной Тогда + Возврат ИмяПеременной; + Иначе + ДобавитьСтрокуКода(ТаблицаКода, " "+"ХранилищеЗначения = Новый ХранилищеЗначения(" + ИмяПеременной + ");"); + КонецЕсли; + + Возврат "//Была создана структура"; +КонецФункции + +Функция ПолучитьСтрокуДляСоответствия(Соответствие,ТаблицаСправочниковДляПолученияМакетовFixtures,ТаблицаКода,ВернутьИмяПеременной = Ложь) + + //Сообщить(" "); + //Сообщить("ОбъектДляХранилищаЗначения = Новый Структура;"); + СчетчикОбъектов = СчетчикОбъектов + 1; + ИмяПеременной = " "+"Соответствие" + СчетчикОбъектов; + + ДобавитьСтрокуКода(ТаблицаКода," "); + ДобавитьСтрокуКода(ТаблицаКода,ИмяПеременной + " = Новый Соответствие;"); + + Для каждого Элем Из Соответствие Цикл + Ключ = Элем.Ключ; + Значение = Элем.Значение; + + СтрокаЗначения = ПолучитьСтрокуДляЗначения(Значение,"",ТаблицаСправочниковДляПолученияМакетовFixtures,ТаблицаКода); + СтрокаКлюч = ПолучитьСтрокуДляЗначения(Ключ,"",ТаблицаСправочниковДляПолученияМакетовFixtures,ТаблицаКода); + Если СтрокаЗначения = Неопределено Тогда + СтрокаЗначения = "Неопределено"; + КонецЕсли; + //Сообщить("ОбъектДляХранилищаЗначения.Вставить(""" + Ключ + """," + СтрокаЗначения + ");"); + ДобавитьСтрокуКода(ТаблицаКода,ИмяПеременной + ".Вставить(" + СтрокаКлюч + "," + СтрокаЗначения + ");"); + КонецЦикла; + + Если ВернутьИмяПеременной Тогда + Возврат ИмяПеременной; + Иначе + ДобавитьСтрокуКода(ТаблицаКода, " "+"ХранилищеЗначения = Новый ХранилищеЗначения(" + ИмяПеременной + ");"); + КонецЕсли; + + Возврат "//Была создана структура"; +КонецФункции + +Функция ПолучитьСтрокуДляСпискаЗначений(Спс,ТаблицаСправочниковДляПолученияМакетовFixtures,ТаблицаКода,ВернутьИмяПеременной = Ложь) + + //Сообщить(" "); + //Сообщить("ОбъектДляХранилищаЗначения = Новый Структура;"); + СчетчикОбъектов = СчетчикОбъектов + 1; + ИмяПеременной = " "+"СписокЗначений" + СчетчикОбъектов; + + ДобавитьСтрокуКода(ТаблицаКода," "); + ДобавитьСтрокуКода(ТаблицаКода,ИмяПеременной + " = Новый СписокЗначений;"); + + //Спс = Новый СписокЗначений; + //Спс.Добавить(Справочники.Номенклатура.НайтиПоКоду("00000001728"),"Товар"); + Для каждого Элем Из Спс Цикл + Значение = Элем.Значение; + Представление = Элем.Представление; + Если Значение = Неопределено Тогда + //Сообщить("ОбъектДляХранилищаЗначения.Вставить(""" + Ключ + """,Неопределено);"); + ДобавитьСтрокуКода(ТаблицаКода,ИмяПеременной + ".Добавить(Неопределено,""" + Представление + """);"); + Продолжить; + КонецЕсли; + + СтрокаЗначения = ПолучитьСтрокуДляЗначения(Значение,"",ТаблицаСправочниковДляПолученияМакетовFixtures,ТаблицаКода); + Если СтрокаЗначения = Неопределено Тогда + СтрокаЗначения = "Неопределено"; + КонецЕсли; + Если ЗначениеЗаполнено(Представление) Тогда + ДобавитьСтрокуКода(ТаблицаКода,ИмяПеременной + ".Добавить(" + СтрокаЗначения + ",""" + Представление + """);"); + Иначе + ДобавитьСтрокуКода(ТаблицаКода,ИмяПеременной + ".Добавить(" + СтрокаЗначения + ");"); + КонецЕсли; + КонецЦикла; + + Если ВернутьИмяПеременной Тогда + Возврат ИмяПеременной; + Иначе + ДобавитьСтрокуКода(ТаблицаКода, " "+"ХранилищеЗначения = Новый ХранилищеЗначения(" + ИмяПеременной + ");"); + КонецЕсли; + Возврат "//Была создана структура"; +КонецФункции + +Функция ПолучитьСтрокуДляТаблицыЗначений(Тзн,ТаблицаСправочниковДляПолученияМакетовFixtures,ТаблицаКода,ВернутьИмяПеременной = Ложь) + + СчетчикОбъектов = СчетчикОбъектов + 1; + ЗначениеСчетчика = СчетчикОбъектов; + ИмяПеременной = " "+"ТаблицаЗначений" + СчетчикОбъектов; + + ДобавитьСтрокуКода(ТаблицаКода," "); + ДобавитьСтрокуКода(ТаблицаКода,ИмяПеременной + " = Новый ТаблицаЗначений;"); + + Для каждого Колонка Из Тзн.Колонки Цикл + ДобавитьСтрокуКода(ТаблицаКода,ИмяПеременной + ".Колонки.Добавить(""" + Колонка.Имя + """);"); + КонецЦикла; + + Ном = 0; + Для каждого СтрокаТаблицы Из Тзн Цикл + Ном = Ном + 1; + ДобавитьСтрокуКода(ТаблицаКода, " "+"//Строка №" + Ном); + ИдСтрокиТаблицы = " "+"СтрокаТаблицы_" + ЗначениеСчетчика; + ДобавитьСтрокуКода(ТаблицаКода,ИдСтрокиТаблицы + " = " + ИмяПеременной + ".Добавить();"); + Для каждого Колонка Из Тзн.Колонки Цикл + ЗначениеИзТаблицы = СтрокаТаблицы[Колонка.Имя]; + Если ЗначениеИзТаблицы = Неопределено Тогда + ДобавитьСтрокуКода(ТаблицаКода,ИдСтрокиТаблицы + "." + Колонка.Имя + "=" + "Неопределено" + ";"); + Продолжить; + КонецЕсли; + + + СтрокаЗначения = ПолучитьСтрокуДляЗначения(ЗначениеИзТаблицы,"",ТаблицаСправочниковДляПолученияМакетовFixtures,ТаблицаКода); + Если СтрокаЗначения = Неопределено Тогда + СтрокаЗначения = "Неопределено"; + КонецЕсли; + ДобавитьСтрокуКода(ТаблицаКода,ИдСтрокиТаблицы + "." + Колонка.Имя + "=" + СтрокаЗначения + ";"); + КонецЦикла; + КонецЦикла; + + Если ВернутьИмяПеременной Тогда + Возврат ИмяПеременной; + Иначе + ДобавитьСтрокуКода(ТаблицаКода, " "+"ХранилищеЗначения = Новый ХранилищеЗначения(" + ИмяПеременной + ");"); + КонецЕсли; + + Возврат "//Была создана структура"; +КонецФункции + +Функция ПолучитьДатуСтрокой(Дат) + Возврат "'" + Формат(Дат,"ДФ=yyyyMMdd") + Формат(Дат,"ДФ=HHmmss") + "'"; +КонецФункции + +Процедура ДобавитьОбъектВТаблицу(ТаблицаОбъектов,Объект,Тип,Вид) + Если Не ЗначениеЗаполнено(Объект) Тогда + Возврат; + КонецЕсли; + + СтрТаблицаОбъектов = ТаблицаОбъектов.Добавить(); + СтрТаблицаОбъектов.Объект = Объект; + СтрТаблицаОбъектов.Тип = Тип; + СтрТаблицаОбъектов.Вид = Вид; +КонецПроцедуры + +Функция ПолучитьСтрокуДляЗначения(Значение,ИмяКонстанты = "",ТаблицаСправочников,ТаблицаКода); + ТипЗначения = ТипЗнч(Значение); + + Если ТипЗначения = Тип("Строка") Тогда + + ПромСтр = СтрЗаменить(Значение,"""",""""""); + ЧислоСтрокВСтроке = СтрЧислоСтрок(ПромСтр); + Если ЧислоСтрокВСтроке = 1 Тогда + Возврат """" + ПромСтр + """"; + Иначе + СтрокаРезультат = """" + СтрПолучитьСтроку(ПромСтр,1); + Для Ккк = 2 По ЧислоСтрокВСтроке Цикл + СтрокаРезультат = СтрокаРезультат + Символы.ПС; + СтрокаРезультат = СтрокаРезультат + Символы.Таб + "|" + СтрПолучитьСтроку(ПромСтр,Ккк); + Если Ккк = ЧислоСтрокВСтроке Тогда + СтрокаРезультат = СтрокаРезультат + """"; + КонецЕсли; + КонецЦикла; + + Возврат СтрокаРезультат; + КонецЕсли; + + ИначеЕсли ТипЗначения = Тип("Число") Тогда + Возврат СтрЗаменить(СтрЗаменить(Значение,",","."),Символы.НПП,""); + + ИначеЕсли ТипЗначения = Тип("Булево") Тогда + Если Значение Тогда + Возврат "Истина"; + Иначе + Возврат "Ложь"; + КонецЕсли; + ИначеЕсли ТипЗначения = Тип("Дата") Тогда + Возврат ПолучитьДатуСтрокой(Значение); + ИначеЕсли Справочники.ТипВсеСсылки().СодержитТип(ТипЗначения) Тогда + ИмяМетаданного = Значение.Метаданные().Имя; + ДлинаКода = Значение.Метаданные().ДлинаКода; + ДлинаНаименования = Значение.Метаданные().ДлинаНаименования; + + ДобавитьОбъектВТаблицу(ТаблицаСправочников,Значение,"Справочник",ИмяМетаданного); + + Если ДлинаКода > 0 Тогда + Если Значение.Метаданные().ТипКода = Метаданные.СвойстваОбъектов.ТипКодаСправочника.Число Тогда + Возврат "ПолучитьСправочникПоРеквизиту(""" + ИмяМетаданного + """,""Код""," + СтрЗаменить(СокрЛП(Значение.Код),Символы.НПП,"") + ")"; + Иначе + Возврат "ПолучитьСправочникПоРеквизиту(""" + ИмяМетаданного + """,""Код"",""" + СокрЛП(Значение.Код) + """)"; + КонецЕсли; + ИначеЕсли ДлинаНаименования > 0 Тогда + Возврат "ПолучитьСправочникПоРеквизиту(""" + ИмяМетаданного + """,""Наименование"",""" + СокрЛП(Значение.Наименование) + """)"; + Иначе + Возврат Неопределено; + КонецЕсли; + ИначеЕсли Документы.ТипВсеСсылки().СодержитТип(ТипЗначения) Тогда + ИмяМетаданного = Значение.Метаданные().Имя; + ТипНомера = Значение.Метаданные().ТипНомера; + ДлинаНомера = Значение.Метаданные().ДлинаНомера; + Если ДлинаНомера > 0 Тогда + Если Значение.Метаданные().ТипНомера = Метаданные.СвойстваОбъектов.ТипНомераДокумента.Число Тогда + Возврат "ПолучитьДокументПоНомеру(""" + ИмяМетаданного + """," + СтрЗаменить(СокрЛП(Значение.Номер),Символы.НПП,"") + "," + ПолучитьДатуСтрокой(Значение.Дата) + ")"; + Иначе + Возврат "ПолучитьДокументПоНомеру(""" + ИмяМетаданного + """,""" + СокрЛП(Значение.Номер) + """," + ПолучитьДатуСтрокой(Значение.Дата) + ")"; + КонецЕсли; + Иначе + Возврат "ПолучитьДокументПоНомеру(""" + ИмяМетаданного + """,""" + "" + """," + ПолучитьДатуСтрокой(Значение.Дата) + ")"; + КонецЕсли; + ИначеЕсли Перечисления.ТипВсеСсылки().СодержитТип(ТипЗначения) Тогда + ИмяМетаданного = Значение.Метаданные().Имя; + ИндексЗначенияПеречисления = Перечисления[ИмяМетаданного].Индекс(Значение); + ИмяЗначенияПеречисления = Метаданные.Перечисления[ИмяМетаданного].ЗначенияПеречисления[ИндексЗначенияПеречисления].Имя; + + Возврат "Перечисления." + ИмяМетаданного + "." + ИмяЗначенияПеречисления; + ИначеЕсли ТипЗначения = Тип("ХранилищеЗначения") Тогда + ЗначениеИзХранилища = Значение.Получить(); + Если ЗначениеИзХранилища = Неопределено Тогда + Возврат Неопределено; + КонецЕсли; + + ТипЗначенияИзХранилища = ТипЗнч(ЗначениеИзХранилища); + Если ТипЗначенияИзХранилища = Тип("Структура") Тогда + Если ЗначениеИзХранилища.Количество() = 0 Тогда + Возврат Неопределено; + КонецЕсли; + Возврат ПолучитьСтрокуДляСтруктуры(ЗначениеИзХранилища,ТаблицаСправочников,ТаблицаКода); + ИначеЕсли ТипЗначенияИзХранилища = Тип("СписокЗначений") Тогда + Если ЗначениеИзХранилища.Количество() = 0 Тогда + Возврат Неопределено; + КонецЕсли; + Возврат ПолучитьСтрокуДляСпискаЗначений(ЗначениеИзХранилища,ТаблицаСправочников,ТаблицаКода); + ИначеЕсли ТипЗначенияИзХранилища = Тип("ТаблицаЗначений") Тогда + Если ЗначениеИзХранилища.Количество() = 0 Тогда + Возврат Неопределено; + КонецЕсли; + Возврат ПолучитьСтрокуДляТаблицыЗначений(ЗначениеИзХранилища,ТаблицаСправочников,ТаблицаКода); + ИначеЕсли ТипЗначенияИзХранилища = Тип("Соответствие") Тогда + Если ЗначениеИзХранилища.Количество() = 0 Тогда + Возврат Неопределено; + КонецЕсли; + Возврат ПолучитьСтрокуДляСоответствия(ЗначениеИзХранилища,ТаблицаСправочников,ТаблицаКода); + КонецЕсли; + + Если ИмяКонстанты <> "" Тогда + ДобавитьСтрокуКода(ТаблицаКода," "+"//Здесь надо заполнить константу " + ИмяКонстанты + " в которой хранилище значения. ТипЗначенияИзХранилища="+ТипЗначенияИзХранилища); + КонецЕсли; + Возврат Неопределено; + + ИначеЕсли ТипЗначения = Тип("Структура") Тогда + Возврат ПолучитьСтрокуДляСтруктуры(Значение,ТаблицаСправочников,ТаблицаКода,Истина); + ИначеЕсли ТипЗначения = Тип("СписокЗначений") Тогда + Возврат ПолучитьСтрокуДляСпискаЗначений(Значение,ТаблицаСправочников,ТаблицаКода,Истина); + ИначеЕсли ТипЗначения = Тип("Соответствие") Тогда + Возврат ПолучитьСтрокуДляСоответствия(Значение,ТаблицаСправочников,ТаблицаКода,Истина); + ИначеЕсли ТипЗначения = Тип("ТаблицаЗначений") Тогда + Возврат ПолучитьСтрокуДляТаблицыЗначений(Значение,ТаблицаСправочников,ТаблицаКода,Истина); + Иначе + Если ИмяКонстанты = "" Тогда //значит это подчиненное значение, которое имеет сложный тип, например в таблце значений внутри были структуры + + КонецЕсли; + Возврат Неопределено; + КонецЕсли; +КонецФункции + +Процедура ПолучитьСтрокуКодаДляЗначения(Значение,Имя, ТаблицаСправочниковДляПолученияМакетовFixtures, ТаблицаКода) + + ТипЗначения = ТипЗнч(Значение); + + СтрокаДляЗначения = ПолучитьСтрокуДляЗначения(Значение,Имя,ТаблицаСправочниковДляПолученияМакетовFixtures,ТаблицаКода); + Если СтрокаДляЗначения = Неопределено Тогда + ДобавитьСтрокуКода(ТаблицаКода," "+"//Здесь надо установить значение для константы """ + Имя + """. ТипЗначения="+ТипЗначения); + ИначеЕсли ТипЗначения = Тип("ХранилищеЗначения") Тогда + ДобавитьСтрокуКода(ТаблицаКода," "+"Константы." + Имя + ".Установить(" + "ХранилищеЗначения" + ");"); + ИначеЕсли СтрокаДляЗначения = "ОбработкаВнутриАлгоритма" тогда + //значит уже всё сделано + Иначе + ДобавитьСтрокуКода(ТаблицаКода," "+"Константы." + Имя + ".Установить(" + СтрокаДляЗначения + ");"); + КонецЕсли; + +КонецПроцедуры + +Процедура ДобавитьСтрокуКода(Текст, ТекстДобавить) + + Текст = Текст + Символы.ПС + ТекстДобавить; + +КонецПроцедуры + +Функция ПолучитьТаблицуСправочников() + Перем ТаблицаСправочниковДляПолученияМакетовFixtures; + + ТаблицаСправочниковДляПолученияМакетовFixtures = Новый ТаблицаЗначений; + ТаблицаСправочниковДляПолученияМакетовFixtures.Колонки.Добавить("Объект"); + ТаблицаСправочниковДляПолученияМакетовFixtures.Колонки.Добавить("Тип"); + ТаблицаСправочниковДляПолученияМакетовFixtures.Колонки.Добавить("Вид"); + + Возврат ТаблицаСправочниковДляПолученияМакетовFixtures; + +КонецФункции + +Функция СгенерироватьУстановкуКонстатнтxUnit(Знач ПутьКОбработкеГенерации, Знач МассивИсключений = Неопределено) Экспорт + Перем РезультатПроцедуры, ТестовыеМетоды ; + РезультатПроцедуры = ""; + ТестовыеМетоды = ""; + + МассивМакетовДляВставки = Новый Массив; + Если МассивИсключений = Неопределено Тогда + МассивИсключений = Новый Массив; + КонецЕсли; + + + ГенераторFixtures = ВнешниеОбработки.Создать(ПутьКОбработкеГенерации, Ложь); + ГенераторFixtures.ВыгружатьКод = Истина; + ГенераторFixtures.ОбменДанными = Истина; + ГенераторFixtures.ВыгружатьВJSON = Истина; + + + ТаблицаКонстант = ПолучитьТаблицуКонстант(МассивИсключений); + СоответсвиеКонстантДляЗаполнения = Новый Соответствие; + + Для каждого Строка из ТаблицаКонстант Цикл + + ДобавитьСтрокуКода(РезультатПроцедуры, "#Область "+СтрЗаменить(Строка.Подсистема, ".", "_")); + ДобавитьСтрокуКода(ТестовыеМетоды, " "+"#Область "+СтрЗаменить(Строка.Подсистема, ".", "_")+"ТестовыйМетод"); + ДобавитьСтрокуКода(РезультатПроцедуры, ""); + Для каждого Константа из Строка.Значение Цикл + + Если СоответсвиеКонстантДляЗаполнения.Получить(Константа) = Неопределено Тогда + СоответсвиеКонстантДляЗаполнения.Вставить(Константа, Истина); + Иначе + ДобавитьСтрокуКода(РезультатПроцедуры,"//Константа " + Константа + "."); + Продолжить; + КонецЕсли; + + ТаблицаСправочников = ПолучитьТаблицуСправочников(); + + ИмяМакета = "МакетДанныхДля_"+Константа; + ИмяПроцедуры = "УстановитьКонстанту"+Константа + ""; + + ТекстТеста = СтрЗаменить("ПараметрыТеста = Новый Структура(""ПредставлениеТеста,ИмяТеста,Транзакция,Параметр"", ""%1%"", ""%2%"", Ложь, ""%3%"");", + "%1%", СтрЗаменить(Строка.Подсистема, ".", "_")+"-"+Константа); + ТекстТеста = СтрЗаменить(ТекстТеста, "%2%", ИмяПроцедуры); + + ДобавитьСтрокуКода(РезультатПроцедуры, ""); + ДобавитьСтрокуКода(РезультатПроцедуры, "Процедура "+ИмяПроцедуры + "(Параметр = Неопределено) Экспорт"); + + Значение = Константы[Константа].Получить(); + + Если НЕ ЗначениеЗаполнено(Значение) Тогда + ДобавитьСтрокуКода(РезультатПроцедуры, " "+"//Константа " + Константа + " была не заполнена."); + ДобавитьСтрокуКода(РезультатПроцедуры, " "+"Константы."+Константа+".Установить(Неопределено);"); + ДобавитьСтрокуКода(РезультатПроцедуры, "КонецПроцедуры //"+ИмяПроцедуры); + Продолжить; + КонецЕсли; + + ТипЗначения = ТипЗнч(Значение); + Если ТипЗначения = Тип("ХранилищеЗначения") Тогда + ЗначениеИзХранилища = Значение.Получить(); + Если ЗначениеИзХранилища = Неопределено Тогда + ДобавитьСтрокуКода(РезультатПроцедуры, " "+"//Константа " + Константа + " была не заполнена."); + ДобавитьСтрокуКода(РезультатПроцедуры, " "+"Константы."+Константа+".Установить(Новый ХранилищеЗначения(Неопределено))"); + ДобавитьСтрокуКода(РезультатПроцедуры, "КонецПроцедуры //"+ИмяПроцедуры); + Продолжить; + КонецЕсли; + КонецЕсли; + + СчетчикОбъектов = 0; + ТекстДляВставки = ""; + ПолучитьСтрокуКодаДляЗначения(Значение, Константа, ТаблицаСправочников, ТекстДляВставки); + Если ТаблицаСправочников.Количество() > 0 Тогда + + ТекстТеста = СтрЗаменить(ТекстТеста, "%3%", ИмяМакета); + + ДобавитьСтрокуКода(РезультатПроцедуры, ""); + ДобавитьСтрокуКода(РезультатПроцедуры, " "+"юТест.СоздатьДанныеПоМакетам(ЭтотОбъект, Параметр);"); + Иначе + СтроковоеПердставлениеЗначения = ""; + Попытка + + СтроковоеПердставлениеЗначения = Строка(Значение); + СтроковоеПердставлениеЗначения = СтрЗаменить(СтроковоеПердставлениеЗначения,"""",""""""); + СтроковоеПердставлениеЗначения = СокрЛП(Лев(СтроковоеПердставлениеЗначения, 100)); + Исключение + + КонецПопытки; + ТекстТеста = СтрЗаменить(ТекстТеста, "%3%", СтроковоеПердставлениеЗначения); + КонецЕсли; + + + ДобавитьСтрокуКода(ТестовыеМетоды, " "+ТекстТеста); + ДобавитьСтрокуКода(ТестовыеМетоды, " "+"ВсеТесты.Добавить(ПараметрыТеста);"); + + + ДобавитьСтрокуКода(РезультатПроцедуры, ТекстДляВставки); + ДобавитьСтрокуКода(РезультатПроцедуры, "КонецПроцедуры //"+ИмяПроцедуры); + + ТаблицаДанных = ТаблицаСправочников.Скопировать(); + ТаблицаДанных.Свернуть("Объект"); + Для каждого строкаданных из ТаблицаДанных Цикл + НоваяСтрока = ГенераторFixtures.ТаблицаДанных.Добавить(); + НоваяСтрока.Ссылка = строкаданных.Объект; + КонецЦикла; + + Если ТаблицаДанных.Количество() > 0 Тогда + Макет = Новый ТекстовыйДокумент; + МассивСсылок = ТаблицаДанных.ВыгрузитьКолонку("Объект"); + Текст = ГенераторFixtures.ОбъектыВJSON(МассивСсылок); + + Макет.УстановитьТекст(Текст); + Макет.ВставитьСтроку(0,"/* "+ИмяМакета+"*/"); + + ГенераторFixtures.ТаблицаДанных.Очистить(); + МассивМакетовДляВставки.Добавить(Новый Структура("Макет, ИмяМакета", Макет, ИмяМакета)); + КонецЕсли; + + КонецЦикла; + + ДобавитьСтрокуКода(РезультатПроцедуры, "#КонецОбласти"); + ДобавитьСтрокуКода(РезультатПроцедуры, "//КонецОбласти "+СтрЗаменить(Строка.Подсистема, ".", "_")); + ДобавитьСтрокуКода(РезультатПроцедуры, ""); + + ДобавитьСтрокуКода(ТестовыеМетоды, " "+"#КонецОбласти"); + ДобавитьСтрокуКода(ТестовыеМетоды, ""); + + КонецЦикла; + + ТекстШаблона = ПолучитьМакет("ШаблонТекстаМодуляxUnit"); + Текст = ТекстШаблона.ПолучитьТекст(); + Текст = СтрЗаменить(Текст, "%1%", ТестовыеМетоды); + Текст = СтрЗаменить(Текст, "%2%", РезультатПроцедуры); + + СтруктураРезультатов = Новый Структура("Процедура, СписокТестов, МассивМакетов", Текст, ТестовыеМетоды, МассивМакетовДляВставки); + + Возврат СтруктураРезультатов; + +КонецФункции //СгенерироватьУстановкуКонстатнт + +Процедура ПрочитатьПодсистемыРекурсивно(Подсистема, СоотвествиеМетаданныхИПодсистем, Родитель = "") + + ИмяПодсистемы = ?(ПустаяСтрока(Родитель), "", Родитель+".") + Подсистема.Имя; + Если Подсистема.Подсистемы.Количество() > 0 Тогда + Для каждого подпосистема из Подсистема.Подсистемы Цикл + ПрочитатьПодсистемыРекурсивно(подпосистема, СоотвествиеМетаданныхИПодсистем, ИмяПодсистемы); + КонецЦикла; + КонецЕсли; + + Для каждого ЭлементКоллекции из Подсистема.Состав Цикл + Если СоотвествиеМетаданныхИПодсистем.Получить(ЭлементКоллекции) = Неопределено Тогда + СоотвествиеМетаданныхИПодсистем.Вставить(ЭлементКоллекции, Новый Массив()); + КонецЕсли; + + Массив = СоотвествиеМетаданныхИПодсистем.Получить(ЭлементКоллекции); + Массив.Добавить(ИмяПодсистемы); + КонецЦикла; + +КонецПроцедуры + +Функция ПолучитьТаблицуКонстант(МассивИсключений) Экспорт + + СоотвествиеМетаданныхИПодсистем = Новый Соответствие; + Для каждого Подсистема из Метаданные.Подсистемы Цикл + ПрочитатьПодсистемыРекурсивно(Подсистема, СоотвествиеМетаданныхИПодсистем, ""); + КонецЦикла; + + СортировкаПоПодсистемам = Новый Соответствие; + + КС = Новый КвалификаторыСтроки(100); + Массив = Новый Массив; + Массив.Добавить(Тип("Строка")); + ОписаниеТиповС = Новый ОписаниеТипов(Массив, , КС); + + ТаблицаПодсистем = Новый ТаблицаЗначений; + ТаблицаПодсистем.Колонки.Добавить("Подсистема", ОписаниеТиповС); + ТаблицаПодсистем.Колонки.Добавить("Значение"); + + НоваяСтрока = ТаблицаПодсистем.Добавить(); + НоваяСтрока.Значение = Новый Массив; + НоваяСтрока.Подсистема = "ъБезПодсистемы"; + + СортировкаПоПодсистемам.Вставить("БезПодсистемы", НоваяСтрока); + + Для каждого константа Из Метаданные.Константы Цикл + + Если МассивИсключений.Найти(константа.Имя) <> Неопределено Тогда + Продолжить; + КонецЕсли; + + Результат = СоотвествиеМетаданныхИПодсистем.Получить(константа); + Если Результат = Неопределено Тогда + Результат = СортировкаПоПодсистемам.Получить("Без подсистемы"); + Результат.Значение.Добавить(Константа.Имя); + Иначе + Для каждого Элемент из Результат Цикл + Если СортировкаПоПодсистемам.Получить(Элемент) = Неопределено Тогда + НоваяСтрока = ТаблицаПодсистем.Добавить(); + НоваяСтрока.Значение = Новый Массив; + НоваяСтрока.Подсистема = Элемент; + СортировкаПоПодсистемам.Вставить(Элемент, НоваяСтрока); + КонецЕсли; + Строка = СортировкаПоПодсистемам.Получить(Элемент); + Строка.Значение.Добавить(константа.Имя); + КонецЦикла; + КонецЕсли; + + КонецЦикла; + + ТаблицаПодсистем.Сортировать("Подсистема"); + + Возврат ТаблицаПодсистем; + +КонецФункции + +Функция Версия() Экспорт + Возврат ПолучитьВерсиюОбработки(); +КонецФункции + +Функция ПолучитьВерсиюОбработки() Экспорт + Возврат "1.1.2"; +КонецФункции + +СчетчикОбъектов = 0; + \ No newline at end of file diff --git "a/src/\320\241\320\276\320\267\320\264\320\260\320\275\320\270\320\265Fixtures\320\224\320\273\321\217\320\235\320\260\321\207\320\260\320\273\321\214\320\275\320\276\320\263\320\276\320\227\320\260\320\277\320\276\320\273\320\275\320\265\320\275\320\270\321\217\320\221\320\260\320\267\321\213/renames.txt" "b/src/\320\241\320\276\320\267\320\264\320\260\320\275\320\270\320\265Fixtures\320\224\320\273\321\217\320\235\320\260\321\207\320\260\320\273\321\214\320\275\320\276\320\263\320\276\320\227\320\260\320\277\320\276\320\273\320\275\320\265\320\275\320\270\321\217\320\221\320\260\320\267\321\213/renames.txt" index 28a0440..e2ad74b 100644 --- "a/src/\320\241\320\276\320\267\320\264\320\260\320\275\320\270\320\265Fixtures\320\224\320\273\321\217\320\235\320\260\321\207\320\260\320\273\321\214\320\275\320\276\320\263\320\276\320\227\320\260\320\277\320\276\320\273\320\275\320\265\320\275\320\270\321\217\320\221\320\260\320\267\321\213/renames.txt" +++ "b/src/\320\241\320\276\320\267\320\264\320\260\320\275\320\270\320\265Fixtures\320\224\320\273\321\217\320\235\320\260\321\207\320\260\320\273\321\214\320\275\320\276\320\263\320\276\320\227\320\260\320\277\320\276\320\273\320\275\320\265\320\275\320\270\321\217\320\221\320\260\320\267\321\213/renames.txt" @@ -1,12 +1,19 @@ -4757cf39-19aa-4067-8d10-1fedb568e7ad-->und\4757cf39-19aa-4067-8d10-1fedb568e7ad -4757cf39-19aa-4067-8d10-1fedb568e7ad.0-->Макеты\ОтчетПоМакетам.mxl -4757cf39-19aa-4067-8d10-1fedb568e7ad.0-->und\4757cf39-19aa-4067-8d10-1fedb568e7ad.0 -99e5fc46-2b74-422a-8731-ff39e15eefbd-->und\99e5fc46-2b74-422a-8731-ff39e15eefbd -99e5fc46-2b74-422a-8731-ff39e15eefbd.0-->Form\Форма -af8543d6-5592-4827-a253-12a9ee4783b1-->und\af8543d6-5592-4827-a253-12a9ee4783b1 -copyinfo-->und\copyinfo -db29e233-6e54-4ee0-becb-d918aec28d42.0\info-->und\db29e233-6e54-4ee0-becb-d918aec28d42.0\info -db29e233-6e54-4ee0-becb-d918aec28d42.0\text-->ObjectModule.txt -root-->und\root -version-->und\version -versions-->und\versions +4757cf39-19aa-4067-8d10-1fedb568e7ad-->und\4757cf39-19aa-4067-8d10-1fedb568e7ad +4757cf39-19aa-4067-8d10-1fedb568e7ad.0-->Макеты\ОтчетПоМакетам.mxl +4757cf39-19aa-4067-8d10-1fedb568e7ad.0-->und\4757cf39-19aa-4067-8d10-1fedb568e7ad.0 +4bde79a9-e308-4a4f-9526-427ff7b05423-->und\4bde79a9-e308-4a4f-9526-427ff7b05423 +4bde79a9-e308-4a4f-9526-427ff7b05423.0-->Form\ФормаУпр\Форма.txt +4bde79a9-e308-4a4f-9526-427ff7b05423.0-->und\4bde79a9-e308-4a4f-9526-427ff7b05423.0 +4bde79a9-e308-4a4f-9526-427ff7b05423.0-->und\4bde79a9-e308-4a4f-9526-427ff7b05423.0 +87502c3a-d318-40d9-a888-4d4cf603f7fc-->und\87502c3a-d318-40d9-a888-4d4cf603f7fc +87502c3a-d318-40d9-a888-4d4cf603f7fc.0-->und\87502c3a-d318-40d9-a888-4d4cf603f7fc.0 +87502c3a-d318-40d9-a888-4d4cf603f7fc.0-->Макеты\ШаблонТекстаМодуляxUnit.txt +99e5fc46-2b74-422a-8731-ff39e15eefbd-->und\99e5fc46-2b74-422a-8731-ff39e15eefbd +99e5fc46-2b74-422a-8731-ff39e15eefbd.0-->Form\Форма +af8543d6-5592-4827-a253-12a9ee4783b1-->und\af8543d6-5592-4827-a253-12a9ee4783b1 +copyinfo-->und\copyinfo +db29e233-6e54-4ee0-becb-d918aec28d42.0\info-->und\db29e233-6e54-4ee0-becb-d918aec28d42.0\info +db29e233-6e54-4ee0-becb-d918aec28d42.0\text-->ObjectModule.txt +root-->und\root +version-->und\version +versions-->und\versions diff --git "a/src/\320\241\320\276\320\267\320\264\320\260\320\275\320\270\320\265Fixtures\320\224\320\273\321\217\320\235\320\260\321\207\320\260\320\273\321\214\320\275\320\276\320\263\320\276\320\227\320\260\320\277\320\276\320\273\320\275\320\265\320\275\320\270\321\217\320\221\320\260\320\267\321\213/und/4757cf39-19aa-4067-8d10-1fedb568e7ad" "b/src/\320\241\320\276\320\267\320\264\320\260\320\275\320\270\320\265Fixtures\320\224\320\273\321\217\320\235\320\260\321\207\320\260\320\273\321\214\320\275\320\276\320\263\320\276\320\227\320\260\320\277\320\276\320\273\320\275\320\265\320\275\320\270\321\217\320\221\320\260\320\267\321\213/und/4757cf39-19aa-4067-8d10-1fedb568e7ad" index 19e0d7c..8478fa5 100644 --- "a/src/\320\241\320\276\320\267\320\264\320\260\320\275\320\270\320\265Fixtures\320\224\320\273\321\217\320\235\320\260\321\207\320\260\320\273\321\214\320\275\320\276\320\263\320\276\320\227\320\260\320\277\320\276\320\273\320\275\320\265\320\275\320\270\321\217\320\221\320\260\320\267\321\213/und/4757cf39-19aa-4067-8d10-1fedb568e7ad" +++ "b/src/\320\241\320\276\320\267\320\264\320\260\320\275\320\270\320\265Fixtures\320\224\320\273\321\217\320\235\320\260\321\207\320\260\320\273\321\214\320\275\320\276\320\263\320\276\320\227\320\260\320\277\320\276\320\273\320\275\320\265\320\275\320\270\321\217\320\221\320\260\320\267\321\213/und/4757cf39-19aa-4067-8d10-1fedb568e7ad" @@ -1,6 +1,6 @@ -{1, -{2,0, -{1, -{0,0,4757cf39-19aa-4067-8d10-1fedb568e7ad},"ОтчетПоМакетам", -{1,"ru","Отчет по макетам"},"",0,0} +{1, +{2,0, +{1, +{0,0,4757cf39-19aa-4067-8d10-1fedb568e7ad},"ОтчетПоМакетам", +{1,"ru","Отчет по макетам"},"",0,0} },0} \ No newline at end of file diff --git "a/src/\320\241\320\276\320\267\320\264\320\260\320\275\320\270\320\265Fixtures\320\224\320\273\321\217\320\235\320\260\321\207\320\260\320\273\321\214\320\275\320\276\320\263\320\276\320\227\320\260\320\277\320\276\320\273\320\275\320\265\320\275\320\270\321\217\320\221\320\260\320\267\321\213/und/4bde79a9-e308-4a4f-9526-427ff7b05423" "b/src/\320\241\320\276\320\267\320\264\320\260\320\275\320\270\320\265Fixtures\320\224\320\273\321\217\320\235\320\260\321\207\320\260\320\273\321\214\320\275\320\276\320\263\320\276\320\227\320\260\320\277\320\276\320\273\320\275\320\265\320\275\320\270\321\217\320\221\320\260\320\267\321\213/und/4bde79a9-e308-4a4f-9526-427ff7b05423" new file mode 100644 index 0000000..75e089e --- /dev/null +++ "b/src/\320\241\320\276\320\267\320\264\320\260\320\275\320\270\320\265Fixtures\320\224\320\273\321\217\320\235\320\260\321\207\320\260\320\273\321\214\320\275\320\276\320\263\320\276\320\227\320\260\320\277\320\276\320\273\320\275\320\265\320\275\320\270\321\217\320\221\320\260\320\267\321\213/und/4bde79a9-e308-4a4f-9526-427ff7b05423" @@ -0,0 +1,15 @@ +{1, +{1, +{0, +{12, +{1, +{0,0,4bde79a9-e308-4a4f-9526-427ff7b05423},"ФормаУпр", +{1,"ru","Форма упр"},"",0,1,32e087ab-1491-49b6-aba7-43571b41ac2b,3},0,1, +{2, +{"#",1708fdaa-cbce-4289-b373-07a5a74bee91,1}, +{"#",1708fdaa-cbce-4289-b373-07a5a74bee91,2} +} +}, +{0} +} +},0} \ No newline at end of file diff --git "a/src/\320\241\320\276\320\267\320\264\320\260\320\275\320\270\320\265Fixtures\320\224\320\273\321\217\320\235\320\260\321\207\320\260\320\273\321\214\320\275\320\276\320\263\320\276\320\227\320\260\320\277\320\276\320\273\320\275\320\265\320\275\320\270\321\217\320\221\320\260\320\267\321\213/und/4bde79a9-e308-4a4f-9526-427ff7b05423.0" "b/src/\320\241\320\276\320\267\320\264\320\260\320\275\320\270\320\265Fixtures\320\224\320\273\321\217\320\235\320\260\321\207\320\260\320\273\321\214\320\275\320\276\320\263\320\276\320\227\320\260\320\277\320\276\320\273\320\275\320\265\320\275\320\270\321\217\320\221\320\260\320\267\321\213/und/4bde79a9-e308-4a4f-9526-427ff7b05423.0" new file mode 100644 index 0000000..abda459 --- /dev/null +++ "b/src/\320\241\320\276\320\267\320\264\320\260\320\275\320\270\320\265Fixtures\320\224\320\273\321\217\320\235\320\260\321\207\320\260\320\273\321\214\320\275\320\276\320\263\320\276\320\227\320\260\320\277\320\276\320\273\320\275\320\265\320\275\320\270\321\217\320\221\320\260\320\267\321\213/und/4bde79a9-e308-4a4f-9526-427ff7b05423.0" @@ -0,0 +1,887 @@ +{3, +{38,0,0,0,0,1,0,1,00000000-0000-0000-0000-000000000000,1, +{1,0},0,0,1,1,1,0,1,0, +{1,9f2e5ddb-3492-4f5d-8f0d-416b8d1d5c5b,"ПриСозданииНаСервере"}, +{0},1, +{19, +{-1,02023637-7868-4a5f-8576-835a76e0c9ba},0,0,0,9,"ФормаКоманднаяПанель", +{1,0}, +{1,0},0,1,0,0,0,2,2, +{3,4, +{0} +}, +{7,3,0,1,100}, +{0,0,0},1, +{0,0,1},1,a9f3b1ac-f51b-431e-b102-55a69acdecad, +{25, +{1,02023637-7868-4a5f-8576-835a76e0c9ba},0,1, +{0, +{0, +{"B",1},0} +},0,"ФормаГенерацияДанных", +{1,0},1, +{1,409b9a53-7f7e-4178-86c1-33176c7c7a7a}, +{0},3,1,0,0,2,2,0,0,0, +{3,4, +{0} +}, +{3,4, +{0} +}, +{3,4, +{0} +}, +{7,3,0,1,100}, +{0,0,0},0, +{4,0, +{0},"",-1,-1,1,0,""},1, +{"Pattern"},"",2,0,1, +{8, +{2,02023637-7868-4a5f-8576-835a76e0c9ba},0,0,0,0,"ФормаГенерацияДанныхРасширеннаяПодсказка", +{1,0}, +{1,0},1,0,0,2,2, +{3,4, +{0} +}, +{7,3,0,1,100}, +{0,0,0},1, +{5,0,0,3,0, +{0}, +{3,4, +{0} +}, +{3,4, +{0} +}, +{3,0, +{0},0,1,0,48312c09-257f-4b29-b280-284dd89efc1e} +},0,1,2, +{1, +{1,0},0},0,0}, +{"U"},1,0,0,1,0,0,0,3,3,3},1,0,0},5,77ffcc29-7f2d-4223-b22f-19666e7250ba, +{32, +{3,02023637-7868-4a5f-8576-835a76e0c9ba},0,0,1, +{0, +{0, +{"B",1},0} +},3,"ВыгружатьКонстанты",1,0, +{1,0}, +{1,0}, +{1, +{2} +}, +{0},1,0,2,0,2, +{1,0}, +{1,0},1,1,0,3,0,3,1,3,0, +{4,0, +{0},"",-1,-1,1,0,""}, +{4,0, +{0},"",-1,-1,1,0,""}, +{3,4, +{0} +}, +{7,3,0,1,100}, +{3,4, +{0} +}, +{3,4, +{0} +}, +{3,4, +{0} +}, +{7,3,0,1,100}, +{0,0,0},1, +{10,0, +{3,4, +{0} +}, +{3,4, +{0} +},0, +{1,0}, +{3,4, +{0} +}, +{7,3,0,1,100},0,0,0,2}, +{0},1, +{19, +{4,02023637-7868-4a5f-8576-835a76e0c9ba},0,0,0,8,"ВыгружатьКонстантыКонтекстноеМеню", +{1,0}, +{1,0},0,1,0,0,0,2,2, +{3,4, +{0} +}, +{7,3,0,1,100}, +{0,0,0},1, +{1,1},0,1,0,0},1, +{"Pattern"}, +{"Pattern"},"","", +{0},0,0,1, +{8, +{5,02023637-7868-4a5f-8576-835a76e0c9ba},0,0,0,0,"ВыгружатьКонстантыРасширеннаяПодсказка", +{1,0}, +{1,0},1,0,0,2,2, +{3,4, +{0} +}, +{7,3,0,1,100}, +{0,0,0},1, +{5,0,0,3,0, +{0}, +{3,4, +{0} +}, +{3,4, +{0} +}, +{3,0, +{0},0,1,0,48312c09-257f-4b29-b280-284dd89efc1e} +},0,1,2, +{1, +{1,0},0},0,0} +},77ffcc29-7f2d-4223-b22f-19666e7250ba, +{32, +{6,02023637-7868-4a5f-8576-835a76e0c9ba},0,0,1, +{0, +{0, +{"B",1},0} +},3,"ВыгружатьРС",1,0, +{1,0}, +{1,0}, +{1, +{4} +}, +{0},1,0,2,0,2, +{1,0}, +{1,0},1,1,0,3,0,3,1,3,0, +{4,0, +{0},"",-1,-1,1,0,""}, +{4,0, +{0},"",-1,-1,1,0,""}, +{3,4, +{0} +}, +{7,3,0,1,100}, +{3,4, +{0} +}, +{3,4, +{0} +}, +{3,4, +{0} +}, +{7,3,0,1,100}, +{0,0,0},1, +{10,0, +{3,4, +{0} +}, +{3,4, +{0} +},0, +{1,0}, +{3,4, +{0} +}, +{7,3,0,1,100},0,0,0,2}, +{0},1, +{19, +{7,02023637-7868-4a5f-8576-835a76e0c9ba},0,0,0,8,"ВыгружатьРСКонтекстноеМеню", +{1,0}, +{1,0},0,1,0,0,0,2,2, +{3,4, +{0} +}, +{7,3,0,1,100}, +{0,0,0},1, +{1,1},0,1,0,0},1, +{"Pattern"}, +{"Pattern"},"","", +{0},0,0,1, +{8, +{8,02023637-7868-4a5f-8576-835a76e0c9ba},0,0,0,0,"ВыгружатьРСРасширеннаяПодсказка", +{1,0}, +{1,0},1,0,0,2,2, +{3,4, +{0} +}, +{7,3,0,1,100}, +{0,0,0},1, +{5,0,0,3,0, +{0}, +{3,4, +{0} +}, +{3,4, +{0} +}, +{3,0, +{0},0,1,0,48312c09-257f-4b29-b280-284dd89efc1e} +},0,1,2, +{1, +{1,0},0},0,0} +},77ffcc29-7f2d-4223-b22f-19666e7250ba, +{32, +{9,02023637-7868-4a5f-8576-835a76e0c9ba},0,0,1, +{0, +{0, +{"B",1},0} +},3,"ВыгружатьСправочники",1,0, +{1,0}, +{1,0}, +{1, +{3} +}, +{0},1,0,2,0,2, +{1,0}, +{1,0},1,1,0,3,0,3,1,3,0, +{4,0, +{0},"",-1,-1,1,0,""}, +{4,0, +{0},"",-1,-1,1,0,""}, +{3,4, +{0} +}, +{7,3,0,1,100}, +{3,4, +{0} +}, +{3,4, +{0} +}, +{3,4, +{0} +}, +{7,3,0,1,100}, +{0,0,0},1, +{10,0, +{3,4, +{0} +}, +{3,4, +{0} +},0, +{1,0}, +{3,4, +{0} +}, +{7,3,0,1,100},0,0,0,2}, +{0},1, +{19, +{10,02023637-7868-4a5f-8576-835a76e0c9ba},0,0,0,8,"ВыгружатьСправочникиКонтекстноеМеню", +{1,0}, +{1,0},0,1,0,0,0,2,2, +{3,4, +{0} +}, +{7,3,0,1,100}, +{0,0,0},1, +{1,1},0,1,0,0},1, +{"Pattern"}, +{"Pattern"},"","", +{0},0,0,1, +{8, +{11,02023637-7868-4a5f-8576-835a76e0c9ba},0,0,0,0,"ВыгружатьСправочникиРасширеннаяПодсказка", +{1,0}, +{1,0},1,0,0,2,2, +{3,4, +{0} +}, +{7,3,0,1,100}, +{0,0,0},1, +{5,0,0,3,0, +{0}, +{3,4, +{0} +}, +{3,4, +{0} +}, +{3,0, +{0},0,1,0,48312c09-257f-4b29-b280-284dd89efc1e} +},0,1,2, +{1, +{1,0},0},0,0} +},77ffcc29-7f2d-4223-b22f-19666e7250ba, +{32, +{12,02023637-7868-4a5f-8576-835a76e0c9ba},0,0,1, +{0, +{0, +{"B",1},0} +},3,"ФорматxUnit",1,0, +{1,0}, +{1,0}, +{1, +{6} +}, +{0},1,0,2,0,2, +{1,0}, +{1,0},1,1,0,3,0,3,1,3,0, +{4,0, +{0},"",-1,-1,1,0,""}, +{4,0, +{0},"",-1,-1,1,0,""}, +{3,4, +{0} +}, +{7,3,0,1,100}, +{3,4, +{0} +}, +{3,4, +{0} +}, +{3,4, +{0} +}, +{7,3,0,1,100}, +{0,0,0},1, +{10,0, +{3,4, +{0} +}, +{3,4, +{0} +},0, +{1,0}, +{3,4, +{0} +}, +{7,3,0,1,100},0,0,0,2}, +{0},1, +{19, +{13,02023637-7868-4a5f-8576-835a76e0c9ba},0,0,0,8,"ФорматxUnitКонтекстноеМеню", +{1,0}, +{1,0},0,1,0,0,0,2,2, +{3,4, +{0} +}, +{7,3,0,1,100}, +{0,0,0},1, +{1,1},0,1,0,0},1, +{"Pattern"}, +{"Pattern"},"","", +{0},0,0,1, +{8, +{14,02023637-7868-4a5f-8576-835a76e0c9ba},0,0,0,0,"ФорматxUnitРасширеннаяПодсказка", +{1,0}, +{1,0},1,0,0,2,2, +{3,4, +{0} +}, +{7,3,0,1,100}, +{0,0,0},1, +{5,0,0,3,0, +{0}, +{3,4, +{0} +}, +{3,4, +{0} +}, +{3,0, +{0},0,1,0,48312c09-257f-4b29-b280-284dd89efc1e} +},0,1,2, +{1, +{1,0},0},0,0} +},77ffcc29-7f2d-4223-b22f-19666e7250ba, +{32, +{15,02023637-7868-4a5f-8576-835a76e0c9ba},0,0,1, +{0, +{0, +{"B",1},0} +},2,"ПутьКГенераторуFixtures",1,0, +{1,0}, +{1,0}, +{1, +{7} +}, +{0},1,0,2,0,2, +{1,0}, +{1,0},1,1,0,3,0,3,1,3,0, +{4,0, +{0},"",-1,-1,1,0,""}, +{4,0, +{0},"",-1,-1,1,0,""}, +{3,4, +{0} +}, +{7,3,0,1,100}, +{3,4, +{0} +}, +{3,4, +{0} +}, +{3,4, +{0} +}, +{7,3,0,1,100}, +{0,0,0},1, +{30, +{3,0},0,0,2,2,1,2,2,2,2,2,1,2,2,2, +{"U"}, +{"U"},"",0, +{4,0, +{0},"",-1,-1,1,0,""},0,0,2,3,00000000-0000-0000-0000-000000000000, +{5004,0}, +{0,0},2, +{1,0}, +{1,0},2,1,0, +{"Pattern"},1, +{1,1960479b-4d89-4eba-8b39-0aa802020558,"ПутьКГенераторуFixturesНачалоВыбора"}, +{3,4, +{0} +}, +{3,4, +{0} +}, +{3,4, +{0} +}, +{7,3,0,1,100},1, +{3,0,0},0, +{1,0},2,0,2,0}, +{0},1, +{19, +{16,02023637-7868-4a5f-8576-835a76e0c9ba},0,0,0,8,"ПутьКГенераторуFixturesКонтекстноеМеню", +{1,0}, +{1,0},0,1,0,0,0,2,2, +{3,4, +{0} +}, +{7,3,0,1,100}, +{0,0,0},1, +{1,1},0,1,0,0},1, +{"Pattern"}, +{"Pattern"},"","", +{0},0,0,1, +{8, +{17,02023637-7868-4a5f-8576-835a76e0c9ba},0,0,0,0,"ПутьКГенераторуFixturesРасширеннаяПодсказка", +{1,0}, +{1,0},1,0,0,2,2, +{3,4, +{0} +}, +{7,3,0,1,100}, +{0,0,0},1, +{5,0,0,3,0, +{0}, +{3,4, +{0} +}, +{3,4, +{0} +}, +{3,0, +{0},0,1,0,48312c09-257f-4b29-b280-284dd89efc1e} +},0,1,2, +{1, +{1,0},0},0,0} +},"","",1, +{19, +{0},0,0,0,7,"Navigator", +{1,0}, +{1,0},0,1,0,0,0,2,2, +{3,4, +{0} +}, +{7,3,0,1,100}, +{0,0,0},0,0,1,0,1, +{8, +{0},0,0,0,0,"NavigatorExtendedTooltip", +{1,0}, +{1,0},1,0,0,2,2, +{3,4, +{0} +}, +{7,3,0,1,100}, +{0,0,0},1, +{5,0,0,3,0, +{0}, +{3,4, +{0} +}, +{3,4, +{0} +}, +{3,0, +{0},0,1,0,48312c09-257f-4b29-b280-284dd89efc1e} +},0,1,2, +{1, +{1,0},0},0,0} +},1,"",0,0,1, +{19, +{0},0,0,0,7,"LeftCaptionButtons", +{1,0}, +{1,0},0,1,0,0,0,2,2, +{3,4, +{0} +}, +{7,3,0,1,100}, +{0,0,0},0,0,1,0,1, +{8, +{0},0,0,0,0,"LeftCaptionButtonsExtendedTooltip", +{1,0}, +{1,0},1,0,0,2,2, +{3,4, +{0} +}, +{7,3,0,1,100}, +{0,0,0},1, +{5,0,0,3,0, +{0}, +{3,4, +{0} +}, +{3,4, +{0} +}, +{3,0, +{0},0,1,0,48312c09-257f-4b29-b280-284dd89efc1e} +},0,1,2, +{1, +{1,0},0},0,0} +},1, +{19, +{0},0,0,0,7,"RightCaptionButtons", +{1,0}, +{1,0},0,1,0,0,0,2,2, +{3,4, +{0} +}, +{7,3,0,1,100}, +{0,0,0},0,0,1,0,1, +{8, +{0},0,0,0,0,"RightCaptionButtonsExtendedTooltip", +{1,0}, +{1,0},1,0,0,2,2, +{3,4, +{0} +}, +{7,3,0,1,100}, +{0,0,0},1, +{5,0,0,3,0, +{0}, +{3,4, +{0} +}, +{3,4, +{0} +}, +{3,0, +{0},0,1,0,48312c09-257f-4b29-b280-284dd89efc1e} +},0,1,2, +{1, +{1,0},0},0,0} +} +}," +&НаКлиенте +Процедура ГенерацияДанных(Команда) + Результат = ГенерацияДанныхНаСервере(); + + Данные = ПолучитьИзВременногоХранилища(Результат); + + Текст = Новый ТекстовыйДокумент; + Текст.УстановитьТекст(Данные.Процедура); + Текст.Показать(""Процедура""); + + Текст = Новый ТекстовыйДокумент; + Текст.УстановитьТекст(Данные.СписокТестов); + Текст.Показать(""СписокТестов""); + + Для каждого ОписаниеМакета из Данные.МассивМакетов Цикл + Если СтрДлина(ОписаниеМакета.Макет.ПолучитьТекст()) > 3 Тогда + ОписаниеМакета.Макет.Показать(ОписаниеМакета.ИмяМакета); + КонецЕсли; + КонецЦикла; + +КонецПроцедуры + +&НаСервере +Функция ГенерацияДанныхНаСервере() + Результат = Новый Структура(); + Результат.Вставить(""ТекстОписанияТестов"", """"); + Результат.Вставить(""ТекстПроцедурУстановитьКонстанты"", """"); + + ОбъектНаСервере = РеквизитФормыВЗначение(""Объект""); + + Если ВыгружатьКонстанты = Истина Тогда + + МассивКонстантИсключений = Новый Массив; + МассивКонстантИсключений.Добавить(""ИдентификаторИнформационнойБазы""); + Данные = ОбъектНаСервере.СгенерироватьУстановкуКонстатнтxUnit(ПутьКГенераторуFixtures, МассивКонстантИсключений); + Возврат ПоместитьВоВременноеХранилище(Данные, ЭтаФорма.УникальныйИдентификатор); + + //Результат = + КонецЕсли; + +КонецФункции + +&НаКлиенте +Процедура ПутьКГенераторуFixturesНачалоВыбора(Элемент, ДанныеВыбора, СтандартнаяОбработка) + + ПараметрыВыбора = Новый Структура(""Элемент"", Элемент); + ПараметрыВыбора.Вставить(""Значение"", ""ПутьКГенераторуFixtures""); + СтандартнаяОбработка = Ложь; + + Режим = РежимДиалогаВыбораФайла.Открытие; + ДиалогОткрытияФайла = Новый ДиалогВыбораФайла(Режим); + ДиалогОткрытияФайла.МножественныйВыбор = Ложь; + ДиалогОткрытияФайла.Фильтр = НСтр(""en='External processing form files (*.epf, *.erf)|*.epf; *.erf'; ru='Файлы внешних обработок (*.epf, *.erf)|*.epf; *.erf'""); + ДиалогОткрытияФайла.Заголовок = НСтр(""en='Choose an external processing form file'; ru='Выберите файл с внешней обработкой'""); + ДиалогОткрытияФайла.ПроверятьСуществованиеФайла = Истина; + ФайлКаталог = Новый Файл(ДанныеВыбора); Каталог = ?(ФайлКаталог.Существует(), ФайлКаталог.Путь, """"); + Если Не ПустаяСтрока(Каталог) Тогда + ДиалогОткрытияФайла.Каталог = Каталог; + КонецЕсли; + + Если ЕстьПоддержкаАсинхронныхВызовов Тогда + Оповещение = Вычислить(""Новый ОписаниеОповещения(""""ПослеВыбораФайла"""", ЭтаФорма, ПараметрыВыбора)""); + ДиалогОткрытияФайла.Показать(Оповещение); + ИначеЕсли ДиалогОткрытияФайла.Выбрать() Тогда + ПослеВыбораФайла(ДиалогОткрытияФайла.ВыбранныеФайлы, ПараметрыВыбора); + КонецЕсли; + + +КонецПроцедуры + + +&НаКлиенте +Процедура ПослеВыбораФайла(ВыбранныеФайлы, ПараметрыВыбора) Экспорт + + Если ВыбранныеФайлы = Неопределено Тогда + Возврат; + КонецЕсли; + + Если ВыбранныеФайлы.Количество() > 0 Тогда + ЭтаФорма[ПараметрыВыбора.Значение] = ВыбранныеФайлы.Получить(0); + КонецЕсли; + +КонецПроцедуры + + + +&НаСервере +Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка) + + ЕстьПоддержкаАсинхронныхВызовов = Ложь; + Попытка + ЕстьПоддержкаАсинхронныхВызовов = Вычислить(""Метаданные.РежимИспользованияСинхронныхВызововРасширенийИВнешнихКомпонент <> Метаданные.СвойстваОбъектов.РежимИспользованияСинхронныхВызововРасширенийИВнешнихКомпонент.Использовать""); + Исключение; КонецПопытки; + +КонецПроцедуры +", +{4,8, +{9, +{1},0,"Объект", +{1,0}, +{"Pattern", +{"#",bd98b060-1b8b-48b7-a575-20e9f075f191} +}, +{0, +{0, +{"B",1},0} +}, +{0, +{0, +{"B",1},0} +}, +{0,0}, +{0,0},1,0,0,0, +{0,0}, +{0,0} +}, +{9, +{2},0,"ВыгружатьКонстанты", +{1,1, +{"ru","Выгружать константы"} +}, +{"Pattern", +{"B"} +}, +{0, +{0, +{"B",1},0} +}, +{0, +{0, +{"B",1},0} +}, +{0,0}, +{0,1, +{0} +},0,1,0,0, +{0,0}, +{0,0} +}, +{9, +{3},0,"ВыгружатьСправочники", +{1,1, +{"ru","Выгружать справочники"} +}, +{"Pattern", +{"B"} +}, +{0, +{0, +{"B",1},0} +}, +{0, +{0, +{"B",1},0} +}, +{0,0}, +{0,1, +{0} +},0,1,0,0, +{0,0}, +{0,0} +}, +{9, +{4},0,"ВыгружатьРС", +{1,1, +{"ru","Выгружать РС"} +}, +{"Pattern", +{"B"} +}, +{0, +{0, +{"B",1},0} +}, +{0, +{0, +{"B",1},0} +}, +{0,0}, +{0,1, +{0} +},0,1,0,0, +{0,0}, +{0,0} +}, +{9, +{5},0,"СоздаватьМакеты", +{1,1, +{"ru","Создавать макеты"} +}, +{"Pattern", +{"B"} +}, +{0, +{0, +{"B",1},0} +}, +{0, +{0, +{"B",1},0} +}, +{0,0}, +{0,0},0,0,0,0, +{0,0}, +{0,0} +}, +{9, +{6},0,"ФорматxUnit", +{1,1, +{"ru","Форматx unit"} +}, +{"Pattern", +{"B"} +}, +{0, +{0, +{"B",1},0} +}, +{0, +{0, +{"B",1},0} +}, +{0,0}, +{0,1, +{0} +},0,1,0,0, +{0,0}, +{0,0} +}, +{9, +{7},0,"ПутьКГенераторуFixtures", +{1,1, +{"ru","Путь к генератору макетов данных"} +}, +{"Pattern", +{"S"} +}, +{0, +{0, +{"B",1},0} +}, +{0, +{0, +{"B",1},0} +}, +{0,0}, +{0,1, +{0} +},0,1,0,0, +{0,0}, +{0,0} +}, +{9, +{8},0,"ЕстьПоддержкаАсинхронныхВызовов", +{1,1, +{"ru","Есть поддержка асинхронных вызовов"} +}, +{"Pattern", +{"B"} +}, +{0, +{0, +{"B",1},0} +}, +{0, +{0, +{"B",1},0} +}, +{0,0}, +{0,0},0,0,0,0, +{0,0}, +{0,0} +},0,0, +{#base64:77u/PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4NCjxTZXR0 +aW5ncyB4bWxucz0iaHR0cDovL3Y4LjFjLnJ1LzguMS9kYXRhLWNvbXBvc2l0aW9u +LXN5c3RlbS9zZXR0aW5ncyIgeG1sbnM6ZGNzY29yPSJodHRwOi8vdjguMWMucnUv +OC4xL2RhdGEtY29tcG9zaXRpb24tc3lzdGVtL2NvcmUiIHhtbG5zOnN0eWxlPSJo +dHRwOi8vdjguMWMucnUvOC4xL2RhdGEvdWkvc3R5bGUiIHhtbG5zOnN5cz0iaHR0 +cDovL3Y4LjFjLnJ1LzguMS9kYXRhL3VpL2ZvbnRzL3N5c3RlbSIgeG1sbnM6djg9 +Imh0dHA6Ly92OC4xYy5ydS84LjEvZGF0YS9jb3JlIiB4bWxuczp2OHVpPSJodHRw +Oi8vdjguMWMucnUvOC4xL2RhdGEvdWkiIHhtbG5zOndlYj0iaHR0cDovL3Y4LjFj +LnJ1LzguMS9kYXRhL3VpL2NvbG9ycy93ZWIiIHhtbG5zOndpbj0iaHR0cDovL3Y4 +LjFjLnJ1LzguMS9kYXRhL3VpL2NvbG9ycy93aW5kb3dzIiB4bWxuczp4cz0iaHR0 +cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHhtbG5zOnhzaT0iaHR0cDov +L3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEtaW5zdGFuY2UiLz4=} +}, +{0,0}, +{0,1, +{7, +{1,409b9a53-7f7e-4178-86c1-33176c7c7a7a},"ГенерацияДанных", +{1,1, +{"ru","Генерация данных"} +}, +{1,1, +{"ru","Генерация данных"} +}, +{0, +{0, +{"B",1},0} +}, +{0,0,0}, +{4,0, +{0},"",-1,-1,1,0,""},"ГенерацияДанных",3,0,0, +{0,0},1,0} +}, +{0,0}, +{0,0},0,0} \ No newline at end of file diff --git "a/src/\320\241\320\276\320\267\320\264\320\260\320\275\320\270\320\265Fixtures\320\224\320\273\321\217\320\235\320\260\321\207\320\260\320\273\321\214\320\275\320\276\320\263\320\276\320\227\320\260\320\277\320\276\320\273\320\275\320\265\320\275\320\270\321\217\320\221\320\260\320\267\321\213/und/87502c3a-d318-40d9-a888-4d4cf603f7fc" "b/src/\320\241\320\276\320\267\320\264\320\260\320\275\320\270\320\265Fixtures\320\224\320\273\321\217\320\235\320\260\321\207\320\260\320\273\321\214\320\275\320\276\320\263\320\276\320\227\320\260\320\277\320\276\320\273\320\275\320\265\320\275\320\270\321\217\320\221\320\260\320\267\321\213/und/87502c3a-d318-40d9-a888-4d4cf603f7fc" new file mode 100644 index 0000000..48f06b5 --- /dev/null +++ "b/src/\320\241\320\276\320\267\320\264\320\260\320\275\320\270\320\265Fixtures\320\224\320\273\321\217\320\235\320\260\321\207\320\260\320\273\321\214\320\275\320\276\320\263\320\276\320\227\320\260\320\277\320\276\320\273\320\275\320\265\320\275\320\270\321\217\320\221\320\260\320\267\321\213/und/87502c3a-d318-40d9-a888-4d4cf603f7fc" @@ -0,0 +1,6 @@ +{1, +{2,4, +{1, +{0,0,87502c3a-d318-40d9-a888-4d4cf603f7fc},"ШаблонТекстаМодуляxUnit", +{1,"ru","Шаблон текста модуляx unit"},"",0,0} +},0} \ No newline at end of file diff --git "a/src/\320\241\320\276\320\267\320\264\320\260\320\275\320\270\320\265Fixtures\320\224\320\273\321\217\320\235\320\260\321\207\320\260\320\273\321\214\320\275\320\276\320\263\320\276\320\227\320\260\320\277\320\276\320\273\320\275\320\265\320\275\320\270\321\217\320\221\320\260\320\267\321\213/und/87502c3a-d318-40d9-a888-4d4cf603f7fc.0" "b/src/\320\241\320\276\320\267\320\264\320\260\320\275\320\270\320\265Fixtures\320\224\320\273\321\217\320\235\320\260\321\207\320\260\320\273\321\214\320\275\320\276\320\263\320\276\320\227\320\260\320\277\320\276\320\273\320\275\320\265\320\275\320\270\321\217\320\221\320\260\320\267\321\213/und/87502c3a-d318-40d9-a888-4d4cf603f7fc.0" new file mode 100644 index 0000000..3e87694 --- /dev/null +++ "b/src/\320\241\320\276\320\267\320\264\320\260\320\275\320\270\320\265Fixtures\320\224\320\273\321\217\320\235\320\260\321\207\320\260\320\273\321\214\320\275\320\276\320\263\320\276\320\227\320\260\320\277\320\276\320\273\320\275\320\265\320\275\320\270\321\217\320\221\320\260\320\267\321\213/und/87502c3a-d318-40d9-a888-4d4cf603f7fc.0" @@ -0,0 +1,61 @@ +Перем юТест; + +Функция ПолучитьСписокТестов(ЮнитТестирование) Экспорт + + юТест = ЮнитТестирование; + ВсеТесты = Новый Массив; + + %1% + + Возврат ВсеТесты; + +КонецФункции + +Функция ПолучитьСправочникПоРеквизиту(ИмяСпр,ИмяРеквизита,ЗначениеРеквизита) + Запрос = Новый Запрос; + Запрос.Текст = + "ВЫБРАТЬ ПЕРВЫЕ 1 + | __ИмяСпр__.Ссылка Как Ссылка + |ИЗ + | Справочник.__ИмяСпр__ КАК __ИмяСпр__ + |ГДЕ + | __ИмяСпр__.__ИмяРеквизита__ = &ЗначениеРеквизита"; + + + Запрос.Текст = СтрЗаменить(Запрос.Текст,"__ИмяСпр__",ИмяСпр); + Запрос.Текст = СтрЗаменить(Запрос.Текст,"__ИмяРеквизита__",ИмяРеквизита); + Запрос.УстановитьПараметр("ЗначениеРеквизита", ЗначениеРеквизита); + + РезультатЗапроса = Запрос.Выполнить(); + ВыборкаДетальныеЗаписи = РезультатЗапроса.Выбрать(); + Пока ВыборкаДетальныеЗаписи.Следующий() Цикл + Возврат ВыборкаДетальныеЗаписи.Ссылка; + КонецЦикла; + + Возврат Справочники[ИмяСпр].ПустаяСсылка(); +КонецФункции + +Функция ПолучитьДокументПоНомеру(ИмяДок,НомерДок,ДатаДок) + Запрос = Новый Запрос; + Запрос.Текст = + "ВЫБРАТЬ ПЕРВЫЕ 1 + | __ИмяДок__.Ссылка Как Ссылка + |ИЗ + | Документ.__ИмяДок__ КАК __ИмяДок__ + |ГДЕ + | __ИмяДок__.Номер = &ЗначениеРеквизита"; + + + Запрос.Текст = СтрЗаменить(Запрос.Текст,"__ИмяДок__",ИмяДок); + Запрос.УстановитьПараметр("ЗначениеРеквизита", НомерДок); + + РезультатЗапроса = Запрос.Выполнить(); + ВыборкаДетальныеЗаписи = РезультатЗапроса.Выбрать(); + Пока ВыборкаДетальныеЗаписи.Следующий() Цикл + Возврат ВыборкаДетальныеЗаписи.Ссылка; + КонецЦикла; + + Возврат Документы[ИмяДок].ПустаяСсылка(); +КонецФункции + +%2% \ No newline at end of file diff --git "a/src/\320\241\320\276\320\267\320\264\320\260\320\275\320\270\320\265Fixtures\320\224\320\273\321\217\320\235\320\260\321\207\320\260\320\273\321\214\320\275\320\276\320\263\320\276\320\227\320\260\320\277\320\276\320\273\320\275\320\265\320\275\320\270\321\217\320\221\320\260\320\267\321\213/und/99e5fc46-2b74-422a-8731-ff39e15eefbd" "b/src/\320\241\320\276\320\267\320\264\320\260\320\275\320\270\320\265Fixtures\320\224\320\273\321\217\320\235\320\260\321\207\320\260\320\273\321\214\320\275\320\276\320\263\320\276\320\227\320\260\320\277\320\276\320\273\320\275\320\265\320\275\320\270\321\217\320\221\320\260\320\267\321\213/und/99e5fc46-2b74-422a-8731-ff39e15eefbd" index 1293bad..f992bb6 100644 --- "a/src/\320\241\320\276\320\267\320\264\320\260\320\275\320\270\320\265Fixtures\320\224\320\273\321\217\320\235\320\260\321\207\320\260\320\273\321\214\320\275\320\276\320\263\320\276\320\227\320\260\320\277\320\276\320\273\320\275\320\265\320\275\320\270\321\217\320\221\320\260\320\267\321\213/und/99e5fc46-2b74-422a-8731-ff39e15eefbd" +++ "b/src/\320\241\320\276\320\267\320\264\320\260\320\275\320\270\320\265Fixtures\320\224\320\273\321\217\320\235\320\260\321\207\320\260\320\273\321\214\320\275\320\276\320\263\320\276\320\227\320\260\320\277\320\276\320\273\320\275\320\265\320\275\320\270\321\217\320\221\320\260\320\267\321\213/und/99e5fc46-2b74-422a-8731-ff39e15eefbd" @@ -1,15 +1,15 @@ -{1, -{1, -{0, -{12, -{1, -{0,0,99e5fc46-2b74-422a-8731-ff39e15eefbd},"Форма", -{1,"ru","Форма"},"",0,1,32e087ab-1491-49b6-aba7-43571b41ac2b,3},0,0, -{2, -{"#",1708fdaa-cbce-4289-b373-07a5a74bee91,1}, -{"#",1708fdaa-cbce-4289-b373-07a5a74bee91,2} -} -}, -{0} -} +{1, +{1, +{0, +{12, +{1, +{0,0,99e5fc46-2b74-422a-8731-ff39e15eefbd},"Форма", +{1,"ru","Форма"},"",0,1,32e087ab-1491-49b6-aba7-43571b41ac2b,3},0,0, +{2, +{"#",1708fdaa-cbce-4289-b373-07a5a74bee91,1}, +{"#",1708fdaa-cbce-4289-b373-07a5a74bee91,2} +} +}, +{0} +} },0} \ No newline at end of file diff --git "a/src/\320\241\320\276\320\267\320\264\320\260\320\275\320\270\320\265Fixtures\320\224\320\273\321\217\320\235\320\260\321\207\320\260\320\273\321\214\320\275\320\276\320\263\320\276\320\227\320\260\320\277\320\276\320\273\320\275\320\265\320\275\320\270\321\217\320\221\320\260\320\267\321\213/und/af8543d6-5592-4827-a253-12a9ee4783b1" "b/src/\320\241\320\276\320\267\320\264\320\260\320\275\320\270\320\265Fixtures\320\224\320\273\321\217\320\235\320\260\321\207\320\260\320\273\321\214\320\275\320\276\320\263\320\276\320\227\320\260\320\277\320\276\320\273\320\275\320\265\320\275\320\270\321\217\320\221\320\260\320\267\321\213/und/af8543d6-5592-4827-a253-12a9ee4783b1" index 0671650..e395e4a 100644 --- "a/src/\320\241\320\276\320\267\320\264\320\260\320\275\320\270\320\265Fixtures\320\224\320\273\321\217\320\235\320\260\321\207\320\260\320\273\321\214\320\275\320\276\320\263\320\276\320\227\320\260\320\277\320\276\320\273\320\275\320\265\320\275\320\270\321\217\320\221\320\260\320\267\321\213/und/af8543d6-5592-4827-a253-12a9ee4783b1" +++ "b/src/\320\241\320\276\320\267\320\264\320\260\320\275\320\270\320\265Fixtures\320\224\320\273\321\217\320\235\320\260\321\207\320\260\320\273\321\214\320\275\320\276\320\263\320\276\320\227\320\260\320\277\320\276\320\273\320\275\320\265\320\275\320\270\321\217\320\221\320\260\320\267\321\213/und/af8543d6-5592-4827-a253-12a9ee4783b1" @@ -1,17 +1,17 @@ -{1, -{af8543d6-5592-4827-a253-12a9ee4783b1},1, -{c3831ec8-d8d5-4f93-8a22-f9bfae07327f, -{1, -{4,bd98b060-1b8b-48b7-a575-20e9f075f191,f129b882-ad00-42d6-b955-3499abbe967c, -{0, -{1, -{0,0,db29e233-6e54-4ee0-becb-d918aec28d42},"СозданиеFixturesДляНачальногоЗаполненияБазы", -{1,"ru","Создание fixtures для начального заполнения базы"},"",0,0} -},99e5fc46-2b74-422a-8731-ff39e15eefbd,"",00000000-0000-0000-0000-000000000000},4, -{2bcef0d1-0981-11d6-b9b8-0050bae0a95d,0}, -{3daea016-69b7-4ed4-9453-127911372fe6,1,4757cf39-19aa-4067-8d10-1fedb568e7ad}, -{d5b0e5ed-256d-401c-9c36-f630cafd8a62,1,99e5fc46-2b74-422a-8731-ff39e15eefbd}, -{ec6bb5e5-b7a8-4d75-bec9-658107a699cf,0} -} -} +{1, +{af8543d6-5592-4827-a253-12a9ee4783b1},1, +{c3831ec8-d8d5-4f93-8a22-f9bfae07327f, +{1, +{4,bd98b060-1b8b-48b7-a575-20e9f075f191,f129b882-ad00-42d6-b955-3499abbe967c, +{0, +{1, +{0,0,db29e233-6e54-4ee0-becb-d918aec28d42},"СозданиеFixturesДляНачальногоЗаполненияБазы", +{1,"ru","Создание fixtures для начального заполнения базы"},"",0,0} +},4bde79a9-e308-4a4f-9526-427ff7b05423,"",99e5fc46-2b74-422a-8731-ff39e15eefbd},4, +{2bcef0d1-0981-11d6-b9b8-0050bae0a95d,0}, +{3daea016-69b7-4ed4-9453-127911372fe6,2,4757cf39-19aa-4067-8d10-1fedb568e7ad,87502c3a-d318-40d9-a888-4d4cf603f7fc}, +{d5b0e5ed-256d-401c-9c36-f630cafd8a62,2,99e5fc46-2b74-422a-8731-ff39e15eefbd,4bde79a9-e308-4a4f-9526-427ff7b05423}, +{ec6bb5e5-b7a8-4d75-bec9-658107a699cf,0} +} +} } \ No newline at end of file diff --git "a/src/\320\241\320\276\320\267\320\264\320\260\320\275\320\270\320\265Fixtures\320\224\320\273\321\217\320\235\320\260\321\207\320\260\320\273\321\214\320\275\320\276\320\263\320\276\320\227\320\260\320\277\320\276\320\273\320\275\320\265\320\275\320\270\321\217\320\221\320\260\320\267\321\213/und/copyinfo" "b/src/\320\241\320\276\320\267\320\264\320\260\320\275\320\270\320\265Fixtures\320\224\320\273\321\217\320\235\320\260\321\207\320\260\320\273\321\214\320\275\320\276\320\263\320\276\320\227\320\260\320\277\320\276\320\273\320\275\320\265\320\275\320\270\321\217\320\221\320\260\320\267\321\213/und/copyinfo" index 7a0c14b..cc5cb26 100644 --- "a/src/\320\241\320\276\320\267\320\264\320\260\320\275\320\270\320\265Fixtures\320\224\320\273\321\217\320\235\320\260\321\207\320\260\320\273\321\214\320\275\320\276\320\263\320\276\320\227\320\260\320\277\320\276\320\273\320\275\320\265\320\275\320\270\321\217\320\221\320\260\320\267\321\213/und/copyinfo" +++ "b/src/\320\241\320\276\320\267\320\264\320\260\320\275\320\270\320\265Fixtures\320\224\320\273\321\217\320\235\320\260\321\207\320\260\320\273\321\214\320\275\320\276\320\263\320\276\320\227\320\260\320\277\320\276\320\273\320\275\320\265\320\275\320\270\321\217\320\221\320\260\320\267\321\213/und/copyinfo" @@ -1,16 +1,19 @@ -{4, -{2, -{99e5fc46-2b74-422a-8731-ff39e15eefbd,99e5fc46-2b74-422a-8731-ff39e15eefbd,1, -{d5b0e5ed-256d-401c-9c36-f630cafd8a62,"Форма"} -}, -{db29e233-6e54-4ee0-becb-d918aec28d42,db29e233-6e54-4ee0-becb-d918aec28d42,1, -{c3831ec8-d8d5-4f93-8a22-f9bfae07327f,"СозданиеFixturesДляНачальногоЗаполненияБазы"} -} -}, -{1, -{bd98b060-1b8b-48b7-a575-20e9f075f191,db29e233-6e54-4ee0-becb-d918aec28d42,0} -}, -{0}, -{0,0}, -{0} +{4, +{3, +{4bde79a9-e308-4a4f-9526-427ff7b05423,4bde79a9-e308-4a4f-9526-427ff7b05423,1, +{d5b0e5ed-256d-401c-9c36-f630cafd8a62,"ФормаУпр"} +}, +{99e5fc46-2b74-422a-8731-ff39e15eefbd,99e5fc46-2b74-422a-8731-ff39e15eefbd,1, +{d5b0e5ed-256d-401c-9c36-f630cafd8a62,"Форма"} +}, +{db29e233-6e54-4ee0-becb-d918aec28d42,db29e233-6e54-4ee0-becb-d918aec28d42,1, +{c3831ec8-d8d5-4f93-8a22-f9bfae07327f,"СозданиеFixturesДляНачальногоЗаполненияБазы"} +} +}, +{1, +{bd98b060-1b8b-48b7-a575-20e9f075f191,db29e233-6e54-4ee0-becb-d918aec28d42,0} +}, +{0}, +{0,0}, +{0} } \ No newline at end of file diff --git "a/src/\320\241\320\276\320\267\320\264\320\260\320\275\320\270\320\265Fixtures\320\224\320\273\321\217\320\235\320\260\321\207\320\260\320\273\321\214\320\275\320\276\320\263\320\276\320\227\320\260\320\277\320\276\320\273\320\275\320\265\320\275\320\270\321\217\320\221\320\260\320\267\321\213/und/version" "b/src/\320\241\320\276\320\267\320\264\320\260\320\275\320\270\320\265Fixtures\320\224\320\273\321\217\320\235\320\260\321\207\320\260\320\273\321\214\320\275\320\276\320\263\320\276\320\227\320\260\320\277\320\276\320\273\320\275\320\265\320\275\320\270\321\217\320\221\320\260\320\267\321\213/und/version" index c23bfe2..92ae86a 100644 --- "a/src/\320\241\320\276\320\267\320\264\320\260\320\275\320\270\320\265Fixtures\320\224\320\273\321\217\320\235\320\260\321\207\320\260\320\273\321\214\320\275\320\276\320\263\320\276\320\227\320\260\320\277\320\276\320\273\320\275\320\265\320\275\320\270\321\217\320\221\320\260\320\267\321\213/und/version" +++ "b/src/\320\241\320\276\320\267\320\264\320\260\320\275\320\270\320\265Fixtures\320\224\320\273\321\217\320\235\320\260\321\207\320\260\320\273\321\214\320\275\320\276\320\263\320\276\320\227\320\260\320\277\320\276\320\273\320\275\320\265\320\275\320\270\321\217\320\221\320\260\320\267\321\213/und/version" @@ -1,3 +1,3 @@ -{ -{216,0} +{ +{216,0} } \ No newline at end of file diff --git "a/src/\320\241\320\276\320\267\320\264\320\260\320\275\320\270\320\265Fixtures\320\224\320\273\321\217\320\235\320\260\321\207\320\260\320\273\321\214\320\275\320\276\320\263\320\276\320\227\320\260\320\277\320\276\320\273\320\275\320\265\320\275\320\270\321\217\320\221\320\260\320\267\321\213/und/versions" "b/src/\320\241\320\276\320\267\320\264\320\260\320\275\320\270\320\265Fixtures\320\224\320\273\321\217\320\235\320\260\321\207\320\260\320\273\321\214\320\275\320\276\320\263\320\276\320\227\320\260\320\277\320\276\320\273\320\275\320\265\320\275\320\270\321\217\320\221\320\260\320\267\321\213/und/versions" index 3d7963d..d14c636 100644 --- "a/src/\320\241\320\276\320\267\320\264\320\260\320\275\320\270\320\265Fixtures\320\224\320\273\321\217\320\235\320\260\321\207\320\260\320\273\321\214\320\275\320\276\320\263\320\276\320\227\320\260\320\277\320\276\320\273\320\275\320\265\320\275\320\270\321\217\320\221\320\260\320\267\321\213/und/versions" +++ "b/src/\320\241\320\276\320\267\320\264\320\260\320\275\320\270\320\265Fixtures\320\224\320\273\321\217\320\235\320\260\321\207\320\260\320\273\321\214\320\275\320\276\320\263\320\276\320\227\320\260\320\277\320\276\320\273\320\275\320\265\320\275\320\270\321\217\320\221\320\260\320\267\321\213/und/versions" @@ -1 +1 @@ -{1,11,"",b3caacb5-74ac-4de2-b3c3-c92e617d6ce1,"4757cf39-19aa-4067-8d10-1fedb568e7ad",bbaaf164-57b7-48a9-8d75-a2403edaeff1,"4757cf39-19aa-4067-8d10-1fedb568e7ad.0",8fe005e0-5e21-4586-8f0c-d825383c4504,"99e5fc46-2b74-422a-8731-ff39e15eefbd",20793689-ed85-4511-b8c5-12f1158fefb1,"99e5fc46-2b74-422a-8731-ff39e15eefbd.0",3b887bf8-edd7-48f8-b608-f8abbc4bc0bb,"af8543d6-5592-4827-a253-12a9ee4783b1",0d30de82-c8c7-4c4c-91e2-d76b1eb722fb,"copyinfo",3f952391-6c09-4fb3-a4b6-483cea6a7c4e,"db29e233-6e54-4ee0-becb-d918aec28d42.0",d74bbb07-5a35-4214-865c-ce82091fbce4,"root",ef0e5136-3641-4203-b4bb-b4db779dcffe,"version",5599a260-f225-4c6a-89d3-f075fbd1ac42,"versions",cb5290cd-6679-472a-a778-63a94ffe9837} \ No newline at end of file +{1,15,"",8182f731-7d38-4cf2-90ff-adf8344bbe60,"4757cf39-19aa-4067-8d10-1fedb568e7ad",eb4da30f-d268-490e-af57-cf59d35571b8,"4757cf39-19aa-4067-8d10-1fedb568e7ad.0",f5e376e6-71f3-42a9-9a9e-8634f7b8efe2,"4bde79a9-e308-4a4f-9526-427ff7b05423",ecba2d6c-d489-4eda-9ad2-d1ba173c89d2,"4bde79a9-e308-4a4f-9526-427ff7b05423.0",f5ee8fcf-407b-4f84-8ebe-a53acf819d26,"87502c3a-d318-40d9-a888-4d4cf603f7fc",d13af6f0-9bc9-4926-baac-0ec521cc0e17,"87502c3a-d318-40d9-a888-4d4cf603f7fc.0",b6137008-8ff6-4ea3-b05d-9276e95a6f4e,"99e5fc46-2b74-422a-8731-ff39e15eefbd",eacae476-7baf-4492-a3a5-ea47c9680c86,"99e5fc46-2b74-422a-8731-ff39e15eefbd.0",d28843b3-91a0-4ad8-994f-079cb69025c0,"af8543d6-5592-4827-a253-12a9ee4783b1",82657b01-77d1-4957-a3fc-630f2f1db0c6,"copyinfo",0d1fa46d-c38e-442d-a087-8c42d22fd2a8,"db29e233-6e54-4ee0-becb-d918aec28d42.0",9350733b-d904-4912-b5f6-865373611dcc,"root",65e0ed47-02f1-435a-8ba9-6b3dc53ee86e,"version",3d9a278e-9636-429d-9c69-0e515ea3e0d4,"versions",e6275912-659f-4e64-ab11-0f6a5080534e} \ No newline at end of file diff --git "a/src/\320\241\320\276\320\267\320\264\320\260\320\275\320\270\320\265Fixtures\320\224\320\273\321\217\320\235\320\260\321\207\320\260\320\273\321\214\320\275\320\276\320\263\320\276\320\227\320\260\320\277\320\276\320\273\320\275\320\265\320\275\320\270\321\217\320\221\320\260\320\267\321\213/\320\234\320\260\320\272\320\265\321\202\321\213/\320\236\321\202\321\207\320\265\321\202\320\237\320\276\320\234\320\260\320\272\320\265\321\202\320\260\320\274_mxl.txt" "b/src/\320\241\320\276\320\267\320\264\320\260\320\275\320\270\320\265Fixtures\320\224\320\273\321\217\320\235\320\260\321\207\320\260\320\273\321\214\320\275\320\276\320\263\320\276\320\227\320\260\320\277\320\276\320\273\320\275\320\265\320\275\320\270\321\217\320\221\320\260\320\267\321\213/\320\234\320\260\320\272\320\265\321\202\321\213/\320\236\321\202\321\207\320\265\321\202\320\237\320\276\320\234\320\260\320\272\320\265\321\202\320\260\320\274_mxl.txt" index b6c0091..cf58c9a 100644 --- "a/src/\320\241\320\276\320\267\320\264\320\260\320\275\320\270\320\265Fixtures\320\224\320\273\321\217\320\235\320\260\321\207\320\260\320\273\321\214\320\275\320\276\320\263\320\276\320\227\320\260\320\277\320\276\320\273\320\275\320\265\320\275\320\270\321\217\320\221\320\260\320\267\321\213/\320\234\320\260\320\272\320\265\321\202\321\213/\320\236\321\202\321\207\320\265\321\202\320\237\320\276\320\234\320\260\320\272\320\265\321\202\320\260\320\274_mxl.txt" +++ "b/src/\320\241\320\276\320\267\320\264\320\260\320\275\320\270\320\265Fixtures\320\224\320\273\321\217\320\235\320\260\321\207\320\260\320\273\321\214\320\275\320\276\320\263\320\276\320\227\320\260\320\277\320\276\320\273\320\275\320\265\320\275\320\270\321\217\320\221\320\260\320\267\321\213/\320\234\320\260\320\272\320\265\321\202\321\213/\320\236\321\202\321\207\320\265\321\202\320\237\320\276\320\234\320\260\320\272\320\265\321\202\320\260\320\274_mxl.txt" @@ -1,3 +1,3 @@ -Имя макета Количество строк - +Имя макета Количество строк + ИмяМакета КолСтрок \ No newline at end of file diff --git "a/src/\320\241\320\276\320\267\320\264\320\260\320\275\320\270\320\265Fixtures\320\224\320\273\321\217\320\235\320\260\321\207\320\260\320\273\321\214\320\275\320\276\320\263\320\276\320\227\320\260\320\277\320\276\320\273\320\275\320\265\320\275\320\270\321\217\320\221\320\260\320\267\321\213/\320\234\320\260\320\272\320\265\321\202\321\213/\320\250\320\260\320\261\320\273\320\276\320\275\320\242\320\265\320\272\321\201\321\202\320\260\320\234\320\276\320\264\321\203\320\273\321\217xUnit.txt" "b/src/\320\241\320\276\320\267\320\264\320\260\320\275\320\270\320\265Fixtures\320\224\320\273\321\217\320\235\320\260\321\207\320\260\320\273\321\214\320\275\320\276\320\263\320\276\320\227\320\260\320\277\320\276\320\273\320\275\320\265\320\275\320\270\321\217\320\221\320\260\320\267\321\213/\320\234\320\260\320\272\320\265\321\202\321\213/\320\250\320\260\320\261\320\273\320\276\320\275\320\242\320\265\320\272\321\201\321\202\320\260\320\234\320\276\320\264\321\203\320\273\321\217xUnit.txt" new file mode 100644 index 0000000..3e87694 --- /dev/null +++ "b/src/\320\241\320\276\320\267\320\264\320\260\320\275\320\270\320\265Fixtures\320\224\320\273\321\217\320\235\320\260\321\207\320\260\320\273\321\214\320\275\320\276\320\263\320\276\320\227\320\260\320\277\320\276\320\273\320\275\320\265\320\275\320\270\321\217\320\221\320\260\320\267\321\213/\320\234\320\260\320\272\320\265\321\202\321\213/\320\250\320\260\320\261\320\273\320\276\320\275\320\242\320\265\320\272\321\201\321\202\320\260\320\234\320\276\320\264\321\203\320\273\321\217xUnit.txt" @@ -0,0 +1,61 @@ +Перем юТест; + +Функция ПолучитьСписокТестов(ЮнитТестирование) Экспорт + + юТест = ЮнитТестирование; + ВсеТесты = Новый Массив; + + %1% + + Возврат ВсеТесты; + +КонецФункции + +Функция ПолучитьСправочникПоРеквизиту(ИмяСпр,ИмяРеквизита,ЗначениеРеквизита) + Запрос = Новый Запрос; + Запрос.Текст = + "ВЫБРАТЬ ПЕРВЫЕ 1 + | __ИмяСпр__.Ссылка Как Ссылка + |ИЗ + | Справочник.__ИмяСпр__ КАК __ИмяСпр__ + |ГДЕ + | __ИмяСпр__.__ИмяРеквизита__ = &ЗначениеРеквизита"; + + + Запрос.Текст = СтрЗаменить(Запрос.Текст,"__ИмяСпр__",ИмяСпр); + Запрос.Текст = СтрЗаменить(Запрос.Текст,"__ИмяРеквизита__",ИмяРеквизита); + Запрос.УстановитьПараметр("ЗначениеРеквизита", ЗначениеРеквизита); + + РезультатЗапроса = Запрос.Выполнить(); + ВыборкаДетальныеЗаписи = РезультатЗапроса.Выбрать(); + Пока ВыборкаДетальныеЗаписи.Следующий() Цикл + Возврат ВыборкаДетальныеЗаписи.Ссылка; + КонецЦикла; + + Возврат Справочники[ИмяСпр].ПустаяСсылка(); +КонецФункции + +Функция ПолучитьДокументПоНомеру(ИмяДок,НомерДок,ДатаДок) + Запрос = Новый Запрос; + Запрос.Текст = + "ВЫБРАТЬ ПЕРВЫЕ 1 + | __ИмяДок__.Ссылка Как Ссылка + |ИЗ + | Документ.__ИмяДок__ КАК __ИмяДок__ + |ГДЕ + | __ИмяДок__.Номер = &ЗначениеРеквизита"; + + + Запрос.Текст = СтрЗаменить(Запрос.Текст,"__ИмяДок__",ИмяДок); + Запрос.УстановитьПараметр("ЗначениеРеквизита", НомерДок); + + РезультатЗапроса = Запрос.Выполнить(); + ВыборкаДетальныеЗаписи = РезультатЗапроса.Выбрать(); + Пока ВыборкаДетальныеЗаписи.Следующий() Цикл + Возврат ВыборкаДетальныеЗаписи.Ссылка; + КонецЦикла; + + Возврат Документы[ИмяДок].ПустаяСсылка(); +КонецФункции + +%2% \ No newline at end of file diff --git "a/\320\241\320\276\320\267\320\264\320\260\320\275\320\270\320\265Fixtures\320\224\320\273\321\217\320\235\320\260\321\207\320\260\320\273\321\214\320\275\320\276\320\263\320\276\320\227\320\260\320\277\320\276\320\273\320\275\320\265\320\275\320\270\321\217\320\221\320\260\320\267\321\213.epf" "b/\320\241\320\276\320\267\320\264\320\260\320\275\320\270\320\265Fixtures\320\224\320\273\321\217\320\235\320\260\321\207\320\260\320\273\321\214\320\275\320\276\320\263\320\276\320\227\320\260\320\277\320\276\320\273\320\275\320\265\320\275\320\270\321\217\320\221\320\260\320\267\321\213.epf" index 6e87493e2d3becfe7620109492b3f935b386ef0e..e5599f75d0e0f89a68409934f542c7a7c486d40c 100644 GIT binary patch delta 27183 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Ξ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%0Du>M)@NmhwJ3WzB zrm&FMyi^_;a>q%;?zd!b8oF#{WiFy*M5!xCq96ZzOR(Ytl*-jJwxy3lqf@D{d_qUd{bL38yoom2q+G4_c8u61@C3a}g(R$JKDpE-Oq6d!* zbTT_>^h7%XuPw9PLOrL0s}0-{B9AS&8UK!@=%~oDi1klBVyd zt*66Bed3L2^bOLNhS)ADH`aH=gDpF=^UU|mBBGS1Bu7`B#%+Z?X3FL5V(XGGfr$Ac zO`7eRZ^fz4=*E0S?AtfRAmQ~wzZdY?=Fi`KeSdJz?yVoFKXfls`|$tb9E+(R-5%?y;gc6hseQ1_5b;o{cY2I4_GCvdVod>*MGE($D3QjkJF|( ziWKRIEFc;`R0z?z&}zU8_ca4jALJ{AKEzGiH0ob#2}sW)i?kL2p|_5%*AGyMNe za053D^}tNc{%2Mk5SJ_xt_suRtRZX)WQnzd8)a!^a@0|gf_jF zhe`h&OpKU@%2M2(+)kVTXwqX9{&v=ht%qFo{ z=5@$05t36YfEs?I^5V+v(K2TZKL*#|Y|rX3?#erSXR6k!hj&}o)zQnRUN0k6G6q(; zp*T{z;BeO@w(nfVL)z%+1oX%I3%8S!sJn=Ru*T0>U%5+57*MKwlGbFjkiT<6|W`SuquaTuO-UBdge zYt0+JlV_~o|F-+AQaSHT+Gh6^trsjq`u%2yG@n|*SyUh0zvA*fMqTF}=?uSFHpH*B ziaQ|DIV*uvjJJNy`E^?bc2@mf-elTSS|T1WhNgYu6Rbb@KXP0yyY4`|ZHwO2D=Nw}vQ}=KV0GMe*76yGi*-&0dyD?vU#`?$ z>}jk1*>s8GlJ26=(?!#kJ58HWI4yCZckk3iGQ#sZou=8CT1sD;ujyU?;ElimV_ExS zUZ;bUb@EE$ZZxmGk-YHzrgP#Kbg#JErUW#;JCNs@e^oS4Smv^|_XtY}njx|Vb8giiTcaW4A8Qt>ah+?8I@nA(urdA;}g zv%1WC(cD~m8zjSI)+BL0-D$Rp#kytR2mO%OXDvLnm#h$0kiTNUE55RBmgCY~8S`m2 ztgdB3toFvPbwaHc#;mIKg?|_)2bRmDX4lQN<$+A7LX+)lL^pq^bix!?Vm7o$gO=XD zd9jK-t>24|Ul;txIQwZr@)DmQcC~)tEk!k&PLbz6N6mPd&k~`ugi3Ahd%EsKK0Xm zU;Q4td+T-wop)V)P*JO-N2@rm?edoJ{vA#)g8voX{mP!X?S_y+TbRMxPt#W&d|