Перем НормыРасчета,РасчетСтоимости; Перем ДатаНачалаСебистоимостьМинусВырубка; Перем итСтарыеУстановленныеЦены; Перем НестандартныеЧислаВДокументах; Перем КакаяЗакладка,СтарыйТекЗаказчик; //поставщики данных Перем ПДИТОбъем; Перем ПДИТКраски; Перем ПДИТМенеджер,ПДИнТбТехнолог,ПДИнТбЛаминаторщик; Перем ПДКонтрагентыПодчДоки; Перем ПДИТПродажа; Перем фВидимыеКолонкиВТППродажа; //поставщики данных Перем ИТСтрокиДокумента; Перем ШрифтTimesNORMAL; Перем ШрифтЗаголовка, ШрифтСтрок; Перем ШрифтДляКнопокТолстый,ШрифтДляКнопокТонкий; Перем ШрифтTimesBOLD; Перем РасширениеФормы; Перем КоллекцияЕдИзм; //Перем ОбщаяРасчетнаяТаблица; //Перем ОбщаяТаблицаКрасок; Перем тбИсторияДокумента; Перем тбОбщая,тбПроцессы,тбНакладныеЗатраты,тбЗатратыКрасок,тбБракИЗатраты,тбСтоимость,тбСтоимостьБезКлише; Перем спИстория,ТекПозицияВИстории; Перем СчитаемОтМассы, СчитаемОтТиража; Перем НизкоеДавление , ВысокоеДавление ; Перем тПечатныйСлой,тЛаминация1,тЛаминация2; Перем ВалютаНакладныхЗатрат,КурсВалютыНакладныхЗатрат; Перем КоллекцияНашихФирм; Перем СоздалиИЗаписалиНовыйЗаказ; Перем ЗакрытьДоступ; Перем ТекСтрокаТаблицаДизайновДляТехнолога; //Перем ТекСтрокатбКонтрагенты; Перем Картинка1,Картинка2,Картинка3,Картинка4,Картинка5,Картинка6; Перем фПодобралиРазвертки; Функция ВернутьАнилоксы(Машина) Далее Функция ВернутьСреднююШиринуДизайна() Далее Функция ВернутьШиринуРисунка() Далее Процедура ИзмШиринаСуществующегоСырья(КакойМатериал) Далее Процедура ИзмФорматСырья(КакойМатериал) Далее Функция ПроверкаЗаполненияФормы() Далее Процедура СделатьРасчет(НаТекущуюДату=0) Далее Процедура СоздатьТаблицуКрасок(ТаблицаКрасок) Далее //Процедура ЗаполнитьОбщуюТаблицуКрасок() Далее //------------------------------------------------------------------------------------------------------------ Процедура ВспомогПроцедура(таб,КакаяТаблица,Поле1,Поле2,Поле3,Поле4=0,Поле5=0,Поле6=0,Поле7=0,Поле8=0) таб.НоваяСтрока(); Если Найти(КакаяТаблица,"Общая")<>0 Тогда таб.Наименование=Поле1; таб.Норма=Поле2; таб.Сумма=Окр(Поле3,4,1); таб.ВложеннаяТаблица=Поле4; ИначеЕсли Найти(КакаяТаблица,"Процессы")<>0 Тогда таб.Процесс=Поле1; таб.Норма=Поле2; таб.Цена=Окр(Поле3,5,1); таб.Сумма=Окр(Поле4,4,1); таб.ВложеннаяТаблица=Поле5; ИначеЕсли Найти(КакаяТаблица,"НакладныеЗатраты")<>0 Тогда таб.Затрата=Поле1; таб.Норма=Поле2; таб.Цена=Поле3; таб.Сумма=Поле4; ИначеЕсли Найти(КакаяТаблица,"ЗатратыКрасок")<>0 Тогда таб.Краска=Поле1; таб.ПроцентЗапечатки=Поле2; таб.Норма=Поле3; таб.Затраты=Поле4; таб.НормаАнилокса=Поле5; таб.Цена=Поле6; таб.Стоимость=Поле7; таб.СухиеЗатраты=Поле8; ИначеЕсли Найти(КакаяТаблица,"БракИЗатраты")<>0 Тогда таб.Затраты=Поле1; таб.Вес=Поле2; ИначеЕсли Найти(КакаяТаблица,"Стоимость")<>0 Тогда таб.Наименование=Поле1; таб.Накрутка=Поле2; таб.ДопНакрутка=Поле3; таб.Цена=Поле4; таб.Сумма=Поле5; ИначеЕсли Найти(КакаяТаблица,"Изменения")<>0 Тогда ДатаИзменения=ТекущаяДата(); ВремяИзменения=ТекущееВремя(); таб.Пользователь=Поле1; таб.ДатаИзменения=ДатаИзменения; таб.ВремяИзменения=ВремяИзменения; таб.Атрибут=Поле2; таб.Действие=Поле3; КонецЕсли; КонецПроцедуры //----------------------------------------------------------------------------------------------------------------------------------------------------------------------- Функция НеобходимаяШиринаСырья(КакойМатериал) Далее Функция ЖелательнаяШиринаСырья(КакойМатериал) Далее //----------------------------------------------------------------------------------------------------------------------------------------------------------------------- Функция Обрезка(КакойМатериал) ЖелательнаяШиринаСырья=ЖелательнаяШиринаСырья(КакойМатериал); Размер=ЖелательнаяШиринаСырья; Если Размер=0 Тогда Возврат ""; КонецЕсли; Если КакойМатериал="ОсновнойМатериал" Тогда Если (ПустоеЗначение(ОсновнойМатериал)=0) Тогда Если Формат1<>0 Тогда Обрезка = Формат1-ЖелательнаяШиринаСырья; Если Обрезка<=0 Тогда Обрезка=0; Форма.тОбрезка1.Цвет(-1); Иначе Форма.тОбрезка1.Цвет(255,0,0); КонецЕсли; Возврат ""+(Обрезка)+" мм"; Иначе Возврат ""; КонецЕсли; КонецЕсли; ИначеЕсли КакойМатериал="МатериалЛаминации1" Тогда Если (ПустоеЗначение(МатериалЛаминации1)=0) Тогда Если Формат2<>0 Тогда Обрезка =Формат2-ЖелательнаяШиринаСырья; Если Обрезка<=0 Тогда Обрезка=0; Форма.тОбрезка2.Цвет(-1); Иначе Форма.тОбрезка2.Цвет(255,0,0); КонецЕсли; Возврат ""+(Обрезка)+" мм"; Иначе Возврат ""; КонецЕсли; КонецЕсли; ИначеЕсли КакойМатериал="МатериалЛаминации2" Тогда Если (ПустоеЗначение(МатериалЛаминации2)=0) Тогда Если Формат3<>0 Тогда Обрезка =Формат3-ЖелательнаяШиринаСырья; Если Обрезка<=0 Тогда Обрезка=0; Форма.тОбрезка3.Цвет(-1); Иначе Форма.тОбрезка3.Цвет(255,0,0); КонецЕсли; Возврат ""+(Обрезка)+" мм"; Иначе Возврат ""; КонецЕсли; КонецЕсли; КонецЕсли; КонецФункции //----------------------------------------------------------------------------------------------------------------------------------------------------------------------- Функция ДанныеПоВалютеДляЭкономистов(ЧтоВернуть) ВозвращаемоеЗначение=""; спр=СоздатьОбъект("Справочник.НакладныеЗатраты"); спр.ИспользоватьДату(ДатаДляЭкономистов,1); Если спр.НайтиПоРеквизиту("НашаФирма",НашаФирма,1)=1 Тогда ВалютаНакладныхЗатрат=спр.Валюта; КурсВалютыНакладныхЗатрат=ВалютаНакладныхЗатрат.Курс.Получить(ДатаДляЭкономистов); Иначе ВалютаНакладныхЗатрат=""; КурсВалютыНакладныхЗатрат=""; КонецЕсли; Если ЧтоВернуть="Валюта" Тогда ВозвращаемоеЗначение=ВалютаНакладныхЗатрат; ИначеЕсли ЧтоВернуть="Курс" Тогда ВозвращаемоеЗначение=КурсВалютыНакладныхЗатрат; КонецЕсли; Возврат ВозвращаемоеЗначение; КонецФункции //----------------------------------------------------------------------------------------------------------------------------------------------------------------------- Процедура СоздатьЭлементыТаблицыКонтрагентов(ВыбранКонтрагент,ТаблицаКонтрагентов) Далее Процедура СохранитьПредАтрибутыИТаблицы(ТаблицаКонтрагентов) Далее Процедура ОбновитьВидимыеАтрибутыИТаблицы(ТаблицаКонтрагентов) Далее Процедура СохранитьПредТаблицуКрасокДизайна() Далее Функция ПодборКрасокДизайна(ВыбранЗаказчик,ВыбранДизайн,СостояниеВыбранДизайна,ТаблицаКрасокДизайна) Далее Процедура ОбновитьЦены() Далее Функция ВернутьТаблицуКрасок(ТаблицаКрасокФормы,спВыбранДизайны) Далее //====================================================================== Процедура ИзмВидимостьКолонокВТППродажныеЦены() Данные = ПДИТПродажа.Данные; Колонки=Данные.Колонки; Если фВидимыеКолонкиВТППродажа=1 Тогда //цены Колонки.Контрагент.Видимость=1; Колонки.фДругаяСтоимостьФорм.Видимость=0; Колонки.СебистоимостьПечатныхФорм.Видимость=0; Колонки.ПродажнаяСтоимостьФорм.Видимость=0; Колонки.УстановленныйОбъем.Видимость=1; Колонки.НестандартныйОбъем.Видимость=0; Колонки.УстановленнаяЦенаБезФорм.Видимость=1; Колонки.УстановленнаяЦена.Видимость=1; Колонки.Откат.Видимость=0; Колонки.УстановленнаяЦенаПоДокументам.Видимость=0; Колонки.РентабельностьЗаказа.Видимость=1; Колонки.ЗаказВакиля.Видимость=0; ИначеЕсли фВидимыеКолонкиВТППродажа=2 Тогда //формы Колонки.Контрагент.Видимость=1; Колонки.фДругаяСтоимостьФорм.Видимость=1; Колонки.СебистоимостьПечатныхФорм.Видимость=0; Колонки.ПродажнаяСтоимостьФорм.Видимость=1; Колонки.УстановленныйОбъем.Видимость=0; Колонки.НестандартныйОбъем.Видимость=0; Колонки.УстановленнаяЦенаБезФорм.Видимость=0; Колонки.УстановленнаяЦена.Видимость=0; Колонки.Откат.Видимость=0; Колонки.УстановленнаяЦенаПоДокументам.Видимость=0; Колонки.РентабельностьЗаказа.Видимость=0; Колонки.ЗаказВакиля.Видимость=0; ИначеЕсли фВидимыеКолонкиВТППродажа=3 Тогда //бонус Колонки.Контрагент.Видимость=1; Колонки.фДругаяСтоимостьФорм.Видимость=0; Колонки.СебистоимостьПечатныхФорм.Видимость=0; Колонки.ПродажнаяСтоимостьФорм.Видимость=0; Колонки.УстановленныйОбъем.Видимость=0; Колонки.НестандартныйОбъем.Видимость=0; Колонки.УстановленнаяЦенаБезФорм.Видимость=0; Колонки.УстановленнаяЦена.Видимость=0; Колонки.Откат.Видимость=1; Колонки.УстановленнаяЦенаПоДокументам.Видимость=0; Колонки.РентабельностьЗаказа.Видимость=0; Колонки.ЗаказВакиля.Видимость=0; ИначеЕсли фВидимыеКолонкиВТППродажа=4 Тогда //по докам Колонки.Контрагент.Видимость=1; Колонки.фДругаяСтоимостьФорм.Видимость=0; Колонки.СебистоимостьПечатныхФорм.Видимость=1; Колонки.ПродажнаяСтоимостьФорм.Видимость=1; Колонки.УстановленныйОбъем.Видимость=1; Колонки.УстановленнаяЦенаБезФорм.Видимость=1; Колонки.УстановленнаяЦена.Видимость=1; Колонки.Откат.Видимость=1; Колонки.УстановленнаяЦенаПоДокументам.Видимость=1; Колонки.РентабельностьЗаказа.Видимость=1; Колонки.ЗаказВакиля.Видимость=1; Если НестандартныеЧислаВДокументах=1 Тогда Колонки.НестандартныйОбъем.Видимость =1; Иначе Колонки.НестандартныйОбъем.Видимость =0; КонецЕсли; КонецЕсли; КонецПроцедуры // //====================================================================== Процедура ПриНажатииВидимыеКолонкиВТППродажа(Кнопка) Если Кнопка="кПродажныеЦены" Тогда фВидимыеКолонкиВТППродажа=1; РасширениеФормы.ПолучитьАтрибут("кПродажныеЦены").Шрифт=ШрифтДляКнопокТолстый; РасширениеФормы.ПолучитьАтрибут("кСтоимостьФорм").Шрифт=ШрифтДляКнопокТонкий; РасширениеФормы.ПолучитьАтрибут("кБонус").Шрифт=ШрифтДляКнопокТонкий; РасширениеФормы.ПолучитьАтрибут("кВсеКолонки").Шрифт=ШрифтДляКнопокТонкий; ИначеЕсли Кнопка="кСтоимостьФорм" Тогда фВидимыеКолонкиВТППродажа=2; РасширениеФормы.ПолучитьАтрибут("кСтоимостьФорм").Шрифт=ШрифтДляКнопокТолстый; РасширениеФормы.ПолучитьАтрибут("кПродажныеЦены").Шрифт=ШрифтДляКнопокТонкий; РасширениеФормы.ПолучитьАтрибут("кБонус").Шрифт=ШрифтДляКнопокТонкий; РасширениеФормы.ПолучитьАтрибут("кВсеКолонки").Шрифт=ШрифтДляКнопокТонкий; ИначеЕсли Кнопка="кБонус" Тогда фВидимыеКолонкиВТППродажа=3; РасширениеФормы.ПолучитьАтрибут("кБонус").Шрифт=ШрифтДляКнопокТолстый; РасширениеФормы.ПолучитьАтрибут("кПродажныеЦены").Шрифт=ШрифтДляКнопокТонкий; РасширениеФормы.ПолучитьАтрибут("кСтоимостьФорм").Шрифт=ШрифтДляКнопокТонкий; РасширениеФормы.ПолучитьАтрибут("кВсеКолонки").Шрифт=ШрифтДляКнопокТонкий; ИначеЕсли Кнопка="кВсеКолонки" Тогда фВидимыеКолонкиВТППродажа=4; РасширениеФормы.ПолучитьАтрибут("кВсеКолонки").Шрифт=ШрифтДляКнопокТолстый; РасширениеФормы.ПолучитьАтрибут("кВсеКолонки").Шрифт=ШрифтДляКнопокТонкий; РасширениеФормы.ПолучитьАтрибут("кСтоимостьФорм").Шрифт=ШрифтДляКнопокТонкий; РасширениеФормы.ПолучитьАтрибут("кБонус").Шрифт=ШрифтДляКнопокТонкий; КонецЕсли; ИзмВидимостьКолонокВТППродажныеЦены(); КонецПроцедуры // ПриНажатии //====================================================================== Функция НазваниеТекТаблицыОплаты() ТекТаблицаОплаты=""; Если КакаяЗакладка="ПродажныеДанные" Тогда Если тбКонтрагенты.КоличествоСтрок()>1 Тогда Если фВидимыеКолонкиВТППродажа=1 Тогда //цены ТекТаблицаОплаты="Продажная цена"; ИначеЕсли фВидимыеКолонкиВТППродажа=2 Тогда //формы ТекТаблицаОплаты="Стоимость форм"; ИначеЕсли фВидимыеКолонкиВТППродажа=3 Тогда //бонус ТекТаблицаОплаты="Бонус"; ИначеЕсли фВидимыеКолонкиВТППродажа=4 Тогда //по докам ТекТаблицаОплаты="Вся таблица"; Иначе ТекТаблицаОплаты="Продажные Данные"; КонецЕсли; Иначе ТекТаблицаОплаты="Продажные Данные"; КонецЕсли; КонецЕсли; Возврат ТекТаблицаОплаты; КонецФункции // //====================================================================== Процедура ОбновитьПоставщикДляМенеджера() ТекСтр=ПДИТОбъем.Данные.ТекущаяСтрока; ИТОбъем=ПДИТОбъем.Данные.ИндексированнаяТаблица; ТекОбъем=""; Если ИТОбъем.КоличествоСтрок()>0 Тогда Если КакСчитаем=СчитаемОтМассы Тогда ТекОбъем=ИТОбъем.Получить(ТекСтр,"Масса"); Подсказка=" кг"; ИначеЕсли КакСчитаем=СчитаемОтТиража Тогда ТекОбъем=ИТОбъем.Получить(ТекСтр,"Тираж"); Подсказка=" тыс.шт"; КонецЕсли; КонецЕсли; Если тбКонтрагенты.КоличествоСтрок()=0 Тогда ТекЗаказчик=""; Иначе ТекЗаказчик=тбКонтрагенты.ПолучитьЗначение(ТекСтрокатбКонтрагенты,"Контрагент"); КонецЕсли; ИТЗМенеджер=ПДИТМенеджер.Данные.ИндексированнаяТаблица; ИТЗМенеджер.УдалитьСтроки(); ИТСтрокиДокумента.ВНачало(); Пока ИТСтрокиДокумента.СледующаяСтрока()=1 Цикл Если (ПустоеЗначение(ТекЗаказчик)=0)и (ТекЗаказчик=ИТСтрокиДокумента.Заказчик) Тогда ИТЗМенеджер.НоваяСтрока(); ИТЗМенеджер.НомерСтрокиДокумента=ИТСтрокиДокумента.НомерСтрокиДокумента; ИТЗМенеджер.Код=ИТСтрокиДокумента.Код; ИТЗМенеджер.Дизайн=ИТСтрокиДокумента.Дизайн; ИТЗМенеджер.ВысотаДизайна=ИТСтрокиДокумента.ВысотаДизайна; ИТЗМенеджер.ШиринаДизайна=ИТСтрокиДокумента.ШиринаДизайна; ИТЗМенеджер.СостояниеДизайна=ИТСтрокиДокумента.СостояниеДизайна; ОбъемТекДизайна=(ИТСтрокиДокумента.КоэфДизайнаВЗаказе*ТекОбъем); ОбъемТекДизайна=Окр(ОбъемТекДизайна,3,1); ОбъемТекДизайнаСтрокой=?(ОбъемТекДизайна>0,(""+ОбъемТекДизайна+Подсказка),""); ИТЗМенеджер.ОбъемДизайна=ОбъемТекДизайнаСтрокой; ИТЗМенеджер.НомерСтрокиДокумента=ИТСтрокиДокумента.НомерСтрокиДокумента; КонецЕсли; КонецЦикла; ПДИТМенеджер.Обновить(); КонецПроцедуры // ОбновитьПоставщикДляМенеджера //====================================================================== Процедура ОбновитьТаблицыДокумента() Если (КакаяЗакладка="Технологический")Тогда Если РасчетСделан=1 Тогда Форма.кРасчетТехнологом.Видимость(1); Форма.картинаПодписьТехнолога.Видимость(1); Форма.кнПодписьТехнолога.Видимость(1); Форма.кнПодписьТехнолога.Доступность(1); Форма.кнОтказТехнолога.Видимость(1); Форма.кнОтказТехнолога.Видимость(1); Форма.тЗаполнилТехнолог.Видимость(1); Форма.тПодписьТехнолога.Видимость(1); Иначе Форма.кРасчетТехнологом.Видимость(1); Форма.картинаПодписьТехнолога.Видимость(1); Форма.кнПодписьТехнолога.Видимость(1); Форма.кнПодписьТехнолога.Доступность(0); Форма.кнОтказТехнолога.Видимость(1); Форма.кнОтказТехнолога.Видимость(1); Форма.тЗаполнилТехнолог.Видимость(1); Форма.тПодписьТехнолога.Видимость(1); КонецЕсли; Иначе Форма.кРасчетТехнологом.Видимость(0); Форма.картинаПодписьТехнолога.Видимость(0); Форма.кнПодписьТехнолога.Доступность(0); Форма.кнПодписьТехнолога.Видимость(0); Форма.кнОтказТехнолога.Видимость(0); Форма.кнОтказТехнолога.Видимость(0); Форма.тЗаполнилТехнолог.Видимость(0); Форма.тПодписьТехнолога.Видимость(0); КонецЕсли; Если ПустоеЗначение(ПДИТОбъем)=1 Тогда Возврат; КонецЕсли; ИТОбъем=ПДИТОбъем.Данные.ИндексированнаяТаблица; ИТОбъем.УдалитьСтроки(); Если ОбщаяРасчетнаяТаблица.КоличествоСтрок()=0 Тогда КакСчитаем=0; КонецЕсли; ОбщаяРасчетнаяТаблица.ВыбратьСтроки(); Пока ОбщаяРасчетнаяТаблица.ПолучитьСтроку()=1 Цикл ИТОбъем.НоваяСтрока(); ИТОбъем.Тираж=ОбщаяРасчетнаяТаблица.Тираж; ИТОбъем.Масса=ОбщаяРасчетнаяТаблица.Масса; КонецЦикла; Если ПустоеЗначение(ПДИнТбТехнолог)=1 Тогда Возврат; КонецЕсли; Если ТекСтрокатбКонтрагенты=0 Тогда ТекСтрокатбКонтрагенты=1; КонецЕсли; Если тбКонтрагенты.КоличествоСтрок()=0 Тогда ТекЗаказчик=""; Иначе ТекЗаказчик=тбКонтрагенты.ПолучитьЗначение(ТекСтрокатбКонтрагенты,"Контрагент"); КонецЕсли; СтарИТСтрокиДокумента=ИТСтрокиДокумента.Копия(1,1); ИТСтрокиДокумента.УдалитьСтроки(); Если СтарИТСтрокиДокумента.НомерИндекса("инДизайн")=0 Тогда СтарИТСтрокиДокумента.ДобавитьИндекс("инДизайн","Дизайн"); КонецЕсли; ВыбратьСтроки(); Пока ПолучитьСтроку()=1 Цикл ИТСтрокиДокумента.НоваяСтрока(); ИТСтрокиДокумента.НомерСтрокиДокумента = НомерСтроки; ИТСтрокиДокумента.Код = СокрЛП(Дизайн.Код); ИТСтрокиДокумента.Дизайн = Дизайн; ИТСтрокиДокумента.ШагПечати = ШагПечати; ИТСтрокиДокумента.ШиринаДорожки = ШиринаДорожки; ИТСтрокиДокумента.ВысотаДизайна = ВысотаДизайна; ИТСтрокиДокумента.ШиринаДизайна = ШиринаДизайна; ИТСтрокиДокумента.КолДорожек = КолДорожек; ИТСтрокиДокумента.Вес1ТысячиПродукции = Вес1ТысячиПродукции; ИТСтрокиДокумента.БоковаяЗакладка = БоковаяЗакладка; ИТСтрокиДокумента.НижняяЗакладка = НижняяЗакладка; ИТСтрокиДокумента.ВерхняяЗакладка = ВерхняяЗакладка; ИТСтрокиДокумента.ДлинаДна = ДлинаДна; ИТСтрокиДокумента.ШиринаРучки = ШиринаРучки; ИТСтрокиДокумента.ДлинаРучки = ДлинаРучки; ИТСтрокиДокумента.ВесРучки = ВесРучки; ИТСтрокиДокумента.ТипПакета = ТипПакета; ИТСтрокиДокумента.ТипРучки = ТипРучки; ИТСтрокиДокумента.ЗамесРучки = ЗамесРучки; ИТСтрокиДокумента.СостояниеДизайна = СостояниеДизайна; ИТСтрокиДокумента.РисунокДизайна = РисунокДизайна; ИТСтрокиДокумента.РазверткаДизайна = РазверткаДизайна; ИТСтрокиДокумента.ВысотаФормы = ВысотаФормы; ИТСтрокиДокумента.ШиринаФормы = ШиринаФормы; ИТСтрокиДокумента.Заказчик = Заказчик; ИТСтрокиДокумента.КоэфДизайнаВЗаказе = КоэфДизайнаВЗаказе; ИТСтрокиДокумента.ВидНамотки=ВидНамотки; ИТСтрокиДокумента.ЕстьМетка=ЕстьМетка; ИТСтрокиДокумента.РасположениеМетки=РасположениеМетки; ИТСтрокиДокумента.РастояниеМеждуМетками=РастояниеМеждуМетками; ИТСтрокиДокумента.РастояниеОтРисункаДоМетки=РастояниеОтРисункаДоМетки; ИТСтрокиДокумента.ВысотаМетки=ВысотаМетки; ИТСтрокиДокумента.ШиринаМетки=ШиринаМетки; ИТСтрокиДокумента.ЕстьПоля=ЕстьПоля; ИТСтрокиДокумента.ПолеСправа=ПолеСправа; ИТСтрокиДокумента.ПолеСлева=ПолеСлева; НомСтр=СтарИТСтрокиДокумента.НайтиСтроку("инДизайн", Дизайн); Если НомСтр=0 Тогда ТаблицаКрасокДизайна=СоздатьОбъект("ИндексированнаяТаблица");; СоздатьТаблицуКрасок(ТаблицаКрасокДизайна); ТаблицаКрасокДизайна=ПодборКрасокДизайна(Заказчик,Дизайн,СостояниеДизайна,ТаблицаКрасокДизайна); Иначе ТаблицаКрасокДизайна=СтарИТСтрокиДокумента.Получить(НомСтр,"ТаблицаКрасок"); КонецЕсли; ИТСтрокиДокумента.ТаблицаКрасок=ТаблицаКрасокДизайна; КонецЦикла; ИТЗТехнолог=ПДИнТбТехнолог.Данные.ИндексированнаяТаблица; ИТЗТехнолог.УдалитьСтроки(); ИТЗЛаминаторщик=ПДИнТбЛаминаторщик.Данные.ИндексированнаяТаблица; ИТЗЛаминаторщик.УдалитьСтроки(); ИТСтрокиДокумента.ВНачало(); Пока ИТСтрокиДокумента.СледующаяСтрока()=1 Цикл ИТЗТехнолог.НоваяСтрока(); ИТЗТехнолог.Код=ИТСтрокиДокумента.Код; ИТЗТехнолог.Дизайн=ИТСтрокиДокумента.Дизайн; ИТЗТехнолог.ШагПечати=ИТСтрокиДокумента.ШагПечати; ИТЗТехнолог.ШиринаДорожки=ИТСтрокиДокумента.ШиринаДорожки; ИТЗТехнолог.ВысотаДизайна=ИТСтрокиДокумента.ВысотаДизайна; ИТЗТехнолог.ШиринаДизайна=ИТСтрокиДокумента.ШиринаДизайна; ИТЗТехнолог.КолДорожек=ИТСтрокиДокумента.КолДорожек; ИТЗТехнолог.БоковаяЗакладка=ИТСтрокиДокумента.БоковаяЗакладка; ИТЗТехнолог.НижняяЗакладка=ИТСтрокиДокумента.НижняяЗакладка; ИТЗТехнолог.ВерхняяЗакладка=ИТСтрокиДокумента.ВерхняяЗакладка; ИТЗТехнолог.ШиринаРучки=ИТСтрокиДокумента.ШиринаРучки; ИТЗТехнолог.ДлинаРучки=ИТСтрокиДокумента.ДлинаРучки; ИТЗТехнолог.ТипПакета=ИТСтрокиДокумента.ТипПакета; ИТЗТехнолог.ТипРучки=ИТСтрокиДокумента.ТипРучки; ИТЗТехнолог.СостояниеДизайна=ИТСтрокиДокумента.СостояниеДизайна; ИТЗТехнолог.РазверткаДизайна=ИТСтрокиДокумента.РазверткаДизайна; ИТЗТехнолог.РисунокДизайна=ИТСтрокиДокумента.РисунокДизайна; ИТЗЛаминаторщик.НоваяСтрока(); ИТЗЛаминаторщик.Код=ИТСтрокиДокумента.Код; ИТЗЛаминаторщик.Дизайн=ИТСтрокиДокумента.Дизайн; ИТЗЛаминаторщик.ШагПечати=ИТСтрокиДокумента.ШагПечати; ИТЗЛаминаторщик.ШиринаДорожки=ИТСтрокиДокумента.ШиринаДорожки; ИТЗЛаминаторщик.ВысотаДизайна=ИТСтрокиДокумента.ВысотаДизайна; ИТЗЛаминаторщик.ШиринаДизайна=ИТСтрокиДокумента.ШиринаДизайна; ИТЗЛаминаторщик.КолДорожек=ИТСтрокиДокумента.КолДорожек; ИТЗЛаминаторщик.БоковаяЗакладка=ИТСтрокиДокумента.БоковаяЗакладка; ИТЗЛаминаторщик.НижняяЗакладка=ИТСтрокиДокумента.НижняяЗакладка; ИТЗЛаминаторщик.ВерхняяЗакладка=ИТСтрокиДокумента.ВерхняяЗакладка; ИТЗЛаминаторщик.ШиринаРучки=ИТСтрокиДокумента.ШиринаРучки; ИТЗЛаминаторщик.ДлинаРучки=ИТСтрокиДокумента.ДлинаРучки; ИТЗЛаминаторщик.ТипПакета=ИТСтрокиДокумента.ТипПакета; ИТЗЛаминаторщик.ТипРучки=ИТСтрокиДокумента.ТипРучки; ИТЗЛаминаторщик.СостояниеДизайна=ИТСтрокиДокумента.СостояниеДизайна; ИТЗЛаминаторщик.РазверткаДизайна=ИТСтрокиДокумента.РазверткаДизайна; ИТЗЛаминаторщик.РисунокДизайна=ИТСтрокиДокумента.РисунокДизайна; КонецЦикла; ПДИТОбъем.Обновить(); ПДИнТбТехнолог.Обновить(); ПДИнТбЛаминаторщик.Обновить(); ОбновитьПоставщикДляМенеджера(); КонтекстФормы=глВернутьКонтекст(Контекст); Если ОбщаяРасчетнаяТаблица.КоличествоСтрок()>0 Тогда МассаДляПереклейки=ОбщаяРасчетнаяТаблица.ПолучитьЗначение(1,"Масса"); ТиражДляПереклейки=ОбщаяРасчетнаяТаблица.ПолучитьЗначение(1,"Тираж"); Иначе МассаДляПереклейки=0; ТиражДляПереклейки=0; КонецЕсли; НормыРасчета.МассаДляПереклейки=МассаДляПереклейки; НормыРасчета.ТиражДляПереклейки=ТиражДляПереклейки; НормыРасчета.УстановитьДокумент(КонтекстФормы); НормыРасчета.РасчитатьВесТысячи(); Если фЗапечаткаТекущДизайна=2 Тогда ТекСтрокаТаблицаДизайновДляТехнолога=ПДИнТбТехнолог.Данные.ТекущаяСтрока; ИТЗ = ПДИнТбТехнолог.Данные.ИндексированнаяТаблица; ТекДизайн=ИТЗ.ПолучитьЗначение(ТекСтрокаТаблицаДизайновДляТехнолога,"Дизайн"); ТаблицаКрасокДизайна=НормыРасчета.ТаблицаКрасок(ТекДизайн); Иначе ТаблицаКрасокДизайна=НормыРасчета.ТаблицаКрасок(); КонецЕсли; ИТЗКраски = ПДИТКраски.Данные.ИндексированнаяТаблица; ИТЗКраски.УдалитьСтроки(); ТаблицаКрасокДизайна.ВНачало(); Пока ТаблицаКрасокДизайна.СледующаяСтрока()=1 Цикл ИТЗКраски.НоваяСтрока(); ИТЗКраски.Краска=ТаблицаКрасокДизайна.Краска; ИТЗКраски.ПроцентЗапечатки=ТаблицаКрасокДизайна.ПроцентЗапечатки; ИТЗКраски.КвоФотоФорм=ТаблицаКрасокДизайна.КвоФотоФорм; ИТЗКраски.ПроцентСвязующего=ТаблицаКрасокДизайна.ПроцентСвязующего; ИТЗКраски.Цена=РасчетСтоимости.ЦенаКраски(ТаблицаКрасокДизайна.Краска); ИТЗКраски.Анилокс=ТаблицаКрасокДизайна.Анилокс; КонецЦикла; ОбновитьЦены(); ПДИТКраски.Обновить(); ИТЗ=ПДИТПродажа.Данные.ИндексированнаяТаблица; ИТЗ.УдалитьСтроки(); Для НомСтр=1 По тбКонтрагенты.КоличествоСтрок() Цикл Если НомСтр=1 Тогда фФормыПродаютсяОтдельно=тбКонтрагенты.ПолучитьЗначение(НомСтр,"фДругаяСтоимостьФорм"); ПродажнаяСтоимостьФорм=тбКонтрагенты.ПолучитьЗначение(НомСтр,"ПродажнаяСтоимостьФорм"); УстановленнаяЦенаБезФорм=тбКонтрагенты.ПолучитьЗначение(НомСтр,"УстановленнаяЦенаБезФорм"); Откат=тбКонтрагенты.ПолучитьЗначение(НомСтр,"Откат"); УстановленнаяЦена=тбКонтрагенты.ПолучитьЗначение(НомСтр,"УстановленнаяЦена"); УстановленнаяЦенаПоДокументам=тбКонтрагенты.ПолучитьЗначение(НомСтр,"УстановленнаяЦенаПоДокументам"); НестандартОбъем=тбКонтрагенты.ПолучитьЗначение(НомСтр,"НестандартныйОбъем"); КонецЕсли; ИТЗ.НоваяСтрока(); ИТЗ.Контрагент=тбКонтрагенты.ПолучитьЗначение(НомСтр,"Контрагент"); ИТЗ.фДругаяСтоимостьФорм=тбКонтрагенты.ПолучитьЗначение(НомСтр,"фДругаяСтоимостьФорм"); ИТЗ.СебистоимостьПечатныхФорм=тбКонтрагенты.ПолучитьЗначение(НомСтр,"СебистоимостьПечатныхФорм"); ИТЗ.ПродажнаяСтоимостьФорм=тбКонтрагенты.ПолучитьЗначение(НомСтр,"ПродажнаяСтоимостьФорм"); ИТЗ.УстановленныйОбъем=тбКонтрагенты.ПолучитьЗначение(НомСтр,"УстановленныйОбъем"); ИТЗ.НестандартныйОбъем=тбКонтрагенты.ПолучитьЗначение(НомСтр,"НестандартныйОбъем"); ИТЗ.УстановленнаяЦенаБезФорм=тбКонтрагенты.ПолучитьЗначение(НомСтр,"УстановленнаяЦенаБезФорм"); ИТЗ.Откат=тбКонтрагенты.ПолучитьЗначение(НомСтр,"Откат"); ИТЗ.УстановленнаяЦена=тбКонтрагенты.ПолучитьЗначение(НомСтр,"УстановленнаяЦена"); ИТЗ.УстановленнаяЦенаПоДокументам=тбКонтрагенты.ПолучитьЗначение(НомСтр,"УстановленнаяЦенаПоДокументам"); ИТЗ.РентабельностьЗаказа=тбКонтрагенты.ПолучитьЗначение(НомСтр,"РентабельностьЗаказа"); ИТЗ.ЗаказВакиля=тбКонтрагенты.ПолучитьЗначение(НомСтр,"ЗаказВакиля"); КонецЦикла; ПДИТПродажа.Обновить(); ИТЗ=ПДКонтрагентыПодчДоки.Данные.ИндексированнаяТаблица; ИТЗ.УдалитьСтроки(); Для НомСтр=1 По тбКонтрагенты.КоличествоСтрок() Цикл ИТЗ.НоваяСтрока(); ИТЗ.Контрагент=тбКонтрагенты.ПолучитьЗначение(НомСтр,"Контрагент"); ИТЗ.Менеджер=тбКонтрагенты.ПолучитьЗначение(НомСтр,"Контрагент"); ИТЗ.ЗаказВакиля=тбКонтрагенты.ПолучитьЗначение(НомСтр,"ЗаказВакиля"); КонецЦикла; ПДКонтрагентыПодчДоки.Обновить(); КонецПроцедуры //----------------------------------------------------------------------------------------------------------------------------------------------------------------------- Функция УстТекущиеСтрокиТаблиц() Если тбКонтрагенты.КоличествоСтрок()<>0 Тогда ТекСтр=тбКонтрагенты.ТекущаяСтрока(); Если ТекСтр<>ТекСтрокатбКонтрагенты Тогда СохранитьПредАтрибутыИТаблицы(тбКонтрагенты); ТекСтрокатбКонтрагенты= ТекСтр; ОбновитьВидимыеАтрибутыИТаблицы(тбКонтрагенты); КонецЕсли; КонецЕсли; Возврат ""; КонецФункции // =============================== Процедура ИзмКоличествоКонтрагентов() Если тбКонтрагенты.КоличествоСтрок()>1 Тогда Иначе КонецЕсли; КонецПроцедуры //------------------------------------------------------------------------------------------------------------ Процедура ОткрытьДоговор() Если Выбран()=0 Тогда Предупреждение("Необходимо сохранить Документ!"); Возврат; КонецЕсли; ВыбранКонтрагент=тбКонтрагенты.ПолучитьЗначение(ТекСтрокатбКонтрагенты,"Контрагент"); ТекМенеджер=тбКонтрагенты.ПолучитьЗначение(ТекСтрокатбКонтрагенты,"Менеджер"); ТекБезнал=Безнал; Если ТекБезнал=0 Тогда Возврат; КонецЕсли; ПоследнийДоговор=глВернутьПоследнийДоговор(Фирма,ВыбранКонтрагент); ПоследнийПодписанныйДоговор=глВернутьПодписанныйДоговор(Фирма,Валюта,ВыбранКонтрагент,Менеджер); Разница=0; Если ПустоеЗначение(ПоследнийПодписанныйДоговор)=0 Тогда Разница=ПоследнийПодписанныйДоговор.ДатаОкончания-ДатаДок; КонецЕсли; Если (ПустоеЗначение(ПоследнийПодписанныйДоговор)=0)И(Разница>60) Тогда ОткрытьФорму(ПоследнийПодписанныйДоговор); Возврат; КонецЕсли; ЕстьДавалческаяЧасть=0; Если ПустоеЗначение(ОсновнойМатериал)=0 Тогда Если (КоефНашегоОснМатериала<>1) Тогда ЕстьДавалческаяЧасть=1; КонецЕсли; КонецЕсли; Если ЕстьДавалческаяЧасть=0 Тогда Если ПустоеЗначение(МатериалЛаминации1)=0 Тогда Если (КоефНашегоМатериалаЛаминации1<>1) Тогда ЕстьДавалческаяЧасть=1; КонецЕсли; КонецЕсли; КонецЕсли; Если ЕстьДавалческаяЧасть=0 Тогда Если ПустоеЗначение(МатериалЛаминации2)=0 Тогда Если (КоефНашегоМатериалаЛаминации2<>1) Тогда ЕстьДавалческаяЧасть=1; КонецЕсли; КонецЕсли; КонецЕсли; ТекОплата1=Оплата1; ТекОплата2=Оплата2; ТекОплата3=тбОплаты.Итог("Процент"); ТекСрокОтсрочки=глНайтиМаксимальное(тбОплаты,"КвоДней"); Если ((ТекОплата1+ТекОплата2+ТекОплата3)<>100) или ((ТекОплата3<>0)и(ТекСрокОтсрочки=0)) или (ПустоеЗначение(ВыбранКонтрагент)=1) или (ПустоеЗначение(Менеджер)=1)Тогда Если (ПустоеЗначение(ПоследнийПодписанныйДоговор)=0) Тогда ОткрытьФорму(ПоследнийПодписанныйДоговор); Возврат; Иначе Предупреждение("Нельзя создавать договор |на основании не заполненного расчета!"); КонецЕсли; Возврат; КонецЕсли; Если (ТекОплата1+ТекОплата2)=100 Тогда ТекВидТорговли=Перечисление.ВидыТорговли.Предоплата; Иначе ТекВидТорговли=Перечисление.ВидыТорговли.Кредит; КонецЕсли; Если ПустоеЗначение(ТекВидТорговли)=1 Тогда ТекВидТорговли = Перечисление.ВидыТорговли.Предоплата; КонецЕсли; СоздатьДоговор=1; СоздатьДопСоглашение=2; ПродлитьДоговор=3; ИзменитьДоговор=4; ОткрытьСуществующийДоговор=5; ОткрытьДействующийДоговор=6; Если (ПустоеЗначение(ПоследнийДоговор)=1) Тогда Выбор=СоздатьДоговор; Иначе Если ПоследнийДоговор=ПоследнийПодписанныйДоговор Тогда Выбор=ОткрытьДействующийДоговор; Иначе Выбор=ИзменитьДоговор; КонецЕсли; КонецЕсли; Если Выбор<>ОткрытьДействующийДоговор Тогда Если глПроверитьКарточкуКонтрагента(ВыбранКонтрагент, ДатаДляЭкономистов,1)=0 Тогда Предупреждение("У "+ВыбранКонтрагент+" |не заполнена полностью карточка"); Если Константа.РазрешитьДвижениеСНезаполненойКарточкой=Перечисление.ДаНет.Нет Тогда СтатусВозврата(0); Возврат; КонецЕсли; КонецЕсли; КонецЕсли; Список=СоздатьОбъект("СписокЗначений"); Поз=1; КонтекстДоговора="РасчетЗаказа"; Если Выбор=СоздатьДоговор Тогда Ответ=Вопрос("Будут ли изменения в тексте |стандартного договора?","Да+Нет",60); фНетиповойДоговор=0; позиция=1; Если Ответ="Да" Тогда фНетиповойДоговор=1; ИначеЕсли Ответ="Нет" Тогда фНетиповойДоговор=0; Иначе Возврат; КонецЕсли; ОткрытьФорму("Документ.Договор",КонтекстДоговора); Если ТипЗначенияСтр(КонтекстДоговора)<>"ГрупповойКонтекст" Тогда Сообщить("Ошибка при создании договора!"); Возврат; КонецЕсли; КонтекстДоговора.фНетиповойДоговор=фНетиповойДоговор; Если ЕстьДавалческаяЧасть=1 Тогда КонтекстДоговора.ВидДоговора=1; Иначе КонтекстДоговора.ВидДоговора=0; КонецЕсли; КонтекстДоговора.Фирма=Фирма; КонтекстДоговора.Контрагент=ВыбранКонтрагент; КонтекстДоговора.Менеджер=ТекМенеджер; КонтекстДоговора.ПлательщикНалогаНаПрибыль = ВыбранКонтрагент.ПлательщикНалогаНаПрибыль.Получить(ДатаДок); КонтекстДоговора.Оплата1=ТекОплата1; КонтекстДоговора.Оплата2=ТекОплата2; КонтекстДоговора.Оплата3=ТекОплата3; КонтекстДоговора.СрокОтсрочки=ТекСрокОтсрочки; КонтекстДоговора.СрокДоговора=1; КонтекстДоговора.ЕдИзмСрока=Перечисление.ВидыСроков.Год; КонтекстДоговора.ДатаДок=РабочаяДата(); КонтекстДоговора.ДатаНачала=КонтекстДоговора.ДатаДок; КонтекстДоговора.Валюта=Валюта; КонтекстДоговора.Дата_Курса = КонтекстДоговора.ДатаДок; КонтекстДоговора.Курс=глКурсДляВалюты(КонтекстДоговора.Валюта,КонтекстДоговора.Дата_Курса); глУстановитьНомер(КонтекстДоговора); КонтекстДоговора.УстановитьНомерДоговора(); КонтекстДоговора.ИзмСрокДоговора(); КонтекстДоговора.ВидТорговли=ТекВидТорговли; //БазВаловыйДоход КонтекстДоговора.ОбновитьФорму(); КонтекстДоговора.СоздатьВордДоговор(); ИначеЕсли Выбор=ИзменитьДоговор Тогда ОбновилисьПоля=Нет; Если ЕстьДавалческаяЧасть=1 Тогда ВидДоговора=1; Иначе ВидДоговора=0; КонецЕсли; Если ПоследнийДоговор.ВидДоговора<>ВидДоговора Тогда ОбновилисьПоля=Да; КонецЕсли; Если ПоследнийДоговор.Оплата1<>ТекОплата1 Тогда ОбновилисьПоля=Да; КонецЕсли; Если ПоследнийДоговор.Оплата2<>ТекОплата2 Тогда ОбновилисьПоля=Да; КонецЕсли; Если ПоследнийДоговор.Оплата3<>ТекОплата3 Тогда ОбновилисьПоля=Да; КонецЕсли; Если ПоследнийДоговор.СрокОтсрочки<>ТекСрокОтсрочки Тогда ОбновилисьПоля=Да; КонецЕсли; МенятьНельзя=Нет; Если (ПоследнийДоговор.фПодписьЮриста=1) или (ПоследнийДоговор.фПодписьРуководителя=1) или (ПоследнийДоговор.ФизичНаличиеДокумента<>Перечисление.ВариантыНаличияДокумента.Нет) Тогда МенятьНельзя=Да; КонецЕсли; Ответ="Нет"; Если (ОбновилисьПоля=Да)и(МенятьНельзя=Нет) Тогда ТекстВопроса="Параметры в расчете отличаются от параметров договора."; Если ПоследнийДоговор.фПодписьМенеджера=1 Тогда ТекстВопроса=ТекстВопроса+" |Если хотите их изменить, |снимите подпись менеджера и |откройте договор снова."; Ответ=Вопрос(ТекстВопроса,"ОК+Отмена"); Если Найти("ОК",Ответ)=0 Тогда Возврат; КонецЕсли; Иначе ТекстВопроса=ТекстВопроса+" |Перезаполнить договор заново?"; Ответ=Вопрос(ТекстВопроса,"Да+Нет+Отмена"); Если Найти("Да,Нет",Ответ)=0 Тогда Возврат; КонецЕсли; КонецЕсли; КонецЕсли; ОткрытьФорму(ПоследнийДоговор,КонтекстДоговора); Если Ответ="Да" Тогда КонтекстДоговора.Менеджер=ТекМенеджер; Если ЕстьДавалческаяЧасть=1 Тогда КонтекстДоговора.ВидДоговора=1; Иначе КонтекстДоговора.ВидДоговора=0; КонецЕсли; КонтекстДоговора.Оплата1=ТекОплата1; КонтекстДоговора.Оплата2=ТекОплата2; КонтекстДоговора.Оплата3=ТекОплата3; КонтекстДоговора.СрокОтсрочки=ТекСрокОтсрочки; КонтекстДоговора.ВидТорговли=ТекВидТорговли; //БазВаловыйДоход КонтекстДоговора.СубконтоВалДохРасх = глВосстановитьЗначение(Контекст,"СубкотноВалДохРасх"); КонтекстДоговора.ОбновитьФорму(); КонтекстДоговора.СоздатьВордДоговор(); КонецЕсли; ИначеЕсли Выбор=ОткрытьСуществующийДоговор Тогда ОткрытьФорму(ПоследнийДоговор); ИначеЕсли Выбор=ОткрытьДействующийДоговор Тогда ОткрытьФорму(ПоследнийПодписанныйДоговор); Иначе Возврат; КонецЕсли; КонецПроцедуры //------------------------------------------------------------------------------------------------------------ Функция УстДоступность() Далее //------------------------------------------------------------------------------------------------------------ Процедура ОткрытьСпецификацию() Если Выбран()=0 Тогда Предупреждение("Необходимо сохранить Документ!"); Возврат; КонецЕсли; Если фПодписьСогласованиеЦены<>1 Тогда Предупреждение("В Расчете нет Подписи о Согласовании Цены! |Спецификация не может быть создана"); Возврат; КонецЕсли; Если (ПустоеЗначение(РасчетСделан)=1) Тогда Предупреждение("Расчет необходимо пересчитать! |Спецификация не может быть создана"); Возврат; КонецЕсли; ВыбранКакСчитаем=КакСчитаем; Если ВыбранКакСчитаем=СчитаемОтМассы Тогда ТекЕдИзм=КоллекцияЕдИзм.КГ; ИначеЕсли ВыбранКакСчитаем=СчитаемОтТиража Тогда ТекЕдИзм=КоллекцияЕдИзм.ШТ; Иначе Возврат; КонецЕсли; ТекВалюта=Валюта; ТекФирма=Фирма; ТекРасчет=ТекущийДокумент(); ТекЗаказчик=тбКонтрагенты.ПолучитьЗначение(ТекСтрокатбКонтрагенты,"Контрагент"); ТекМенеджер=тбКонтрагенты.ПолучитьЗначение(ТекСтрокатбКонтрагенты,"Менеджер"); ТекОплата1=тбКонтрагенты.ПолучитьЗначение(ТекСтрокатбКонтрагенты,"Оплата1"); ТекОплата2=тбКонтрагенты.ПолучитьЗначение(ТекСтрокатбКонтрагенты,"Оплата2"); табОплаты=тбКонтрагенты.ПолучитьЗначение(ТекСтрокатбКонтрагенты,"тбОплаты"); ТекОплата3=табОплаты.Итог("Процент"); ТекСрокОтсрочки=глНайтиМаксимальное(табОплаты,"КвоДней"); Если глПроверитьКарточкуКонтрагента(ТекЗаказчик, ДатаДляЭкономистов,1)=0 Тогда Предупреждение("У "+ТекЗаказчик+" |не заполнена полностью карточка"); Если Константа.РазрешитьДвижениеСНезаполненойКарточкой=Перечисление.ДаНет.Нет Тогда СтатусВозврата(0); Возврат; КонецЕсли; КонецЕсли; ФормыПродаютсяОтдельноТекЗаказчика=тбКонтрагенты.ПолучитьЗначение(ТекСтрокатбКонтрагенты,"фДругаяСтоимостьФорм"); НестандартныйОбъемТекЗаказчика=тбКонтрагенты.ПолучитьЗначение(ТекСтрокатбКонтрагенты,"НестандартныйОбъем"); УстановленныйОбъемТекЗаказчика=тбКонтрагенты.ПолучитьЗначение(ТекСтрокатбКонтрагенты,"УстановленныйОбъем"); УстановленнаяЦенаПоДокументам=тбКонтрагенты.ПолучитьЗначение(ТекСтрокатбКонтрагенты,"УстановленнаяЦенаПоДокументам"); Если УстановленнаяЦенаПоДокументам=0 Тогда //если вдруг цена по документам не установлена, то возмем рельную цену Если ФормыПродаютсяОтдельноТекЗаказчика=1 Тогда УстановленнаяЦенаПоДокументам=тбКонтрагенты.ПолучитьЗначение(ТекСтрокатбКонтрагенты,"УстановленнаяЦенаБезФорм"); Иначе УстановленнаяЦенаПоДокументам=тбКонтрагенты.ПолучитьЗначение(ТекСтрокатбКонтрагенты,"УстановленнаяЦена"); КонецЕсли; КонецЕсли; спрДоговор=глВернутьДоговор(Контекст,ТекФирма,ТекЗаказчик,ТекМенеджер,ТекВалюта,0); Если (ПустоеЗначение(спрДоговор)=1) Тогда ТекстВопроса="С "+ТекЗаказчик+" |нет договора."; Предупреждение(ТекстВопроса,60); Возврат; КонецЕсли; Если УстановленныйОбъемТекЗаказчика=0 Тогда Предупреждение("В расчете не установлен продажный объем! |Спецификация не может быть создана"); Возврат; КонецЕсли; ОбщиеМетоды=СоздатьОбъект("Общие.ОбщиеМетоды"); Спецификация=ОбщиеМетоды.ВернутьСпецификациюПоРасчету(ТекРасчет,ТекЗаказчик); список=СоздатьОбъект("СписокЗначений"); ОткрытьСпецификациюБезИзменения=1; ОткрытьСпецификацию=2; ПрисоеденитьКДругойСпецификации=3; Поз=0; Выбор=0; МожноИзменятьСпецификацию=Да; Если ПустоеЗначение(Спецификация)=0 Тогда Если ПустоеЗначение(ДокументВладелец)=0 Тогда Выбор=ОткрытьСпецификациюБезИзменения; МожноИзменятьСпецификацию=Нет; ИначеЕсли (Спецификация.фПодписьМенеджера+Спецификация.фПодписьЮриста+Спецификация.фПодписьРуководителя)<>0 Тогда Выбор=ОткрытьСпецификациюБезИзменения; МожноИзменятьСпецификацию=Нет; КонецЕсли; КонецЕсли; Если ПустоеЗначение(Выбор)=1 Тогда Выбор=ОткрытьСпецификацию; Если ПустоеЗначение(Спецификация)=1 Тогда ИТЗВыборкаСпецификаций=ОбщиеМетоды.ВернутьВыборкуСпецификацийПоУсловию(ТекФирма,ТекЗаказчик,ТекМенеджер,ТекВалюта, ТекОплата1,ТекОплата2,ТекОплата3,ТекСрокОтсрочки,ТекЕдИзм); Если ИТЗВыборкаСпецификаций.КоличествоСтрок()>0 Тогда ПредставлениеДляОткрытия="Создать спецификацию"; ПредставлениеДляПрисоедения="Присоеденить к другой Спецификации"; Список.ДобавитьЗначение(ОткрытьСпецификацию,ПредставлениеДляОткрытия); Список.ДобавитьЗначение(ПрисоеденитьКДругойСпецификации,ПредставлениеДляПрисоедения); Если Список.ВыбратьЗначение(Выбор,"Сделайте Выбор",Поз,60,1)<>1 Тогда Возврат; КонецЕсли; КонецЕсли; КонецЕсли; КонецЕсли; НЗ=Форма.Закладки.НайтиЗначение("ПродажныеДанные"); Форма.Закладки.ТекущаяСтрока(НЗ); Форма.ИспользоватьСлой("Общий,ПродажныеДанные",2); КакаяЗакладка="ПродажныеДанные"; УстТекущиеСтрокиТаблиц(); УстДоступность(); Форма.Обновить(); Если МожноИзменятьСпецификацию=Да Тогда Текст1="Продажный объем для Спецификации"+(?(КакСчитаем=СчитаемОтМассы," (кг.)"," (тыс.шт.)"))+"."; Текст2="Хотите ли изменить?"; Текст3="Введите новый продажный объем:"; Заголовок="Продажный объем для Спецификации"; Значение=УстановленныйОбъемТекЗаказчика; ОтветПоУмолчанию="Отмена"; ПередаваемКоллекция=СоздатьОбъект("АссоциативныйВектор"); ПередаваемКоллекция.Добавить(Заголовок,"Заголовок"); ПередаваемКоллекция.Добавить(Текст1,"Текст1"); ПередаваемКоллекция.Добавить(Текст2,"Текст2"); ПередаваемКоллекция.Добавить(Текст3,"Текст3"); ПередаваемКоллекция.Добавить(Значение,"Значение"); ПередаваемКоллекция.Добавить(ОтветПоУмолчанию,"Ответ"); Параметр=ПередаваемКоллекция; ОткрытьФормуМодально("Обработка.ВводОбъемаДляСпецификации",Параметр); ПолученКоллекция=Параметр; Ответ=ПолученКоллекция.Ответ; НестандартныеЧислаВДокументахТекЗаказчика=ТекЗаказчик.НестандартныеЧислаВДокументах.Получить(ДатаДляЭкономистов); Значение=ПолученКоллекция.Значение; Если Ответ="Да" Тогда Если ПустоеЗначение(Значение)=1 Тогда Сообщить("Вы установили Объем для "+ТекЗаказчик+" =0! |Цену посчитать нельзя"); Возврат; КонецЕсли; УстановленныйОбъемТекЗаказчика=Значение; ИначеЕсли Ответ="Нет" Тогда //ничего не делаем Иначе Возврат; КонецЕсли; КонецЕсли; СуммаЗаказа=УстановленнаяЦенаПоДокументам*УстановленныйОбъемТекЗаказчика; ЦенаДляСпецификации=УстановленнаяЦенаПоДокументам; Если НестандартныеЧислаВДокументахТекЗаказчика=1 Тогда Если НестандартныйОбъемТекЗаказчика<>0 Тогда ЦенаДляСпецификации=СуммаЗаказа/НестандартныйОбъемТекЗаказчика; УстановленныйОбъемТекЗаказчика=НестандартныйОбъемТекЗаказчика; КонецЕсли; КонецЕсли; ОбъектСпецификация=СоздатьОбъект("ДокументСпецификация"); Если Выбор=ОткрытьСпецификациюБезИзменения Тогда ОткрытьФорму(Спецификация); ИначеЕсли (Выбор=ОткрытьСпецификацию)или (Выбор=ПрисоеденитьКДругойСпецификации) Тогда Если Выбор=ПрисоеденитьКДругойСпецификации Тогда КоллекцияЗаголовков=СоздатьОбъект("АссоциативныйВектор"); КоллекцияЗаголовков.Добавить("Спецификация","Ссылка"); ОтветПоУмолчанию="Отмена"; ПередаваемКоллекция=СоздатьОбъект("АссоциативныйВектор"); ПередаваемКоллекция.Добавить(ИТЗВыборкаСпецификаций,"Таблица"); ПередаваемКоллекция.Добавить(КоллекцияЗаголовков,"КоллекцияЗаголовков"); ПередаваемКоллекция.Добавить(1,"ВыбраннаяСтрока"); ПередаваемКоллекция.Добавить(ОтветПоУмолчанию,"Ответ"); Параметр=ПередаваемКоллекция; ОткрытьФормуМодально("Обработка.ТабличномПолеДляВыбора",Параметр); ПолученКоллекция=Параметр; Ответ=ПолученКоллекция.Ответ; Если Ответ<>"ОК" Тогда Возврат; КонецЕсли; ВыбраннаяСтрока=ПолученКоллекция.ВыбраннаяСтрока; Если ПустоеЗначение(ВыбраннаяСтрока)=1 Тогда Возврат; КонецЕсли; Спецификация=ИТЗВыборкаСпецификаций.ПолучитьЗначение(ВыбраннаяСтрока,"Ссылка"); Если ПустоеЗначение(Спецификация)=1 Тогда Возврат; КонецЕсли; Если (Спецификация.фПодписьЮриста+Спецификация.фПодписьРуководителя)<>0 Тогда Предупреждение("К этой спецификации добавлять нельзя. |В ней есть подписи",60); Возврат; КонецЕсли; КонецЕсли; КонтекстРасчета=глВернутьКонтекст(Контекст); КонтекстСпецификации="РасчетЗаказа"; Если ПустоеЗначение(Спецификация)=0 Тогда ОткрытьФорму(Спецификация,КонтекстСпецификации); Если ТипЗначенияСтр(КонтекстСпецификации)<>"ГрупповойКонтекст" Тогда Сообщить("Ошибка при открытии спецификации!"); СтатусВозврата(0); Возврат; КонецЕсли; ОбъектСпецификация.УстановитьДокумент(КонтекстСпецификации); Иначе ОткрытьФорму("Документ.Спецификация",КонтекстСпецификации); Если ТипЗначенияСтр(КонтекстСпецификации)<>"ГрупповойКонтекст" Тогда Сообщить("Ошибка при открытии спецификации!"); СтатусВозврата(0); Возврат; КонецЕсли; ОбъектСпецификация.УстановитьДокумент(КонтекстСпецификации); ОбъектСпецификация.СодатьНаОсновании(КонтекстРасчета,ТекЗаказчик,ТекМенеджер); КонецЕсли; Если ПустоеЗначение(КонтекстСпецификации)=1 Тогда Возврат; КонецЕсли; ОбъектСпецификация.ПерезаполнитьНаОсновании(КонтекстРасчета,ТекЗаказчик,УстановленныйОбъемТекЗаказчика,ЦенаДляСпецификации); Иначе Возврат; КонецЕсли; КонецПроцедуры //------------------------------------------------------------------------------------------------------------ Функция ЗаписатьДокумент() Далее Процедура ЗаполнитьТаблицыДляТехКарты(ИТЗНормыРасхода,ИТКраски) Далее //------------------------------------------------------------------------------------------------------------ Процедура ОткрытьТехКарту() Если Выбран()=0 Тогда Предупреждение("Необходимо сохранить Документ!"); Возврат; КонецЕсли; Если фПодписьСогласованиеЦены<>1 Тогда Предупреждение("Расчет не установлем объем заказа! |Тех.карта не может быть создана"); Возврат; КонецЕсли; Если (ПустоеЗначение(РасчетСделан)=1) Тогда Предупреждение("Расчет необходимо пересчитать! |Тех.карта не может быть создана"); Возврат; КонецЕсли; Если ЗаписатьДокумент()=0 Тогда Возврат; КонецЕсли; КлассификаторЕдИзм=СоздатьОбъект("Справочник.КлассификаторЕдИзм"); ВыбранКакСчитаем=КакСчитаем; Если ВыбранКакСчитаем=СчитаемОтМассы Тогда КлассификаторЕдИзм.НайтиПоНаименованию("кг.",0,1); ЕдИзм=КлассификаторЕдИзм.ТекущийЭлемент(); ИначеЕсли ВыбранКакСчитаем=СчитаемОтТиража Тогда КлассификаторЕдИзм.НайтиПоНаименованию("шт.",0,1); ЕдИзм=КлассификаторЕдИзм.ТекущийЭлемент(); Иначе Возврат; КонецЕсли; ВыбранМенеджер=тбКонтрагенты.ПолучитьЗначение(ТекСтрокатбКонтрагенты,"Менеджер"); ВыбранФирма=Фирма; ВыбранРасчет=ТекущийДокумент(); Для НС=1 По тбКонтрагенты.КоличествоСтрок() Цикл ТекЗаказчик=тбКонтрагенты.ПолучитьЗначение(НС,"Контрагент"); УстановленныйОбъемТекЗаказчика=тбКонтрагенты.ПолучитьЗначение(НС,"УстановленныйОбъем"); ТаблицаРасчетнаяМасса=тбКонтрагенты.ПолучитьЗначение(НС,"тбРасчетнаяМасса"); Если УстановленныйОбъемТекЗаказчика=0 Тогда Предупреждение("В расчете не установлен продажный объем для |"+ТекЗаказчик+"! |Тех.Карта не может быть создана"); Возврат; КонецЕсли; КонецЦикла; ЕстьТехКарта=0; ТехКарта=""; ВыборкаТехКарт=СоздатьОбъект("Документ"); ВыборкаТехКарт.ВыбратьПоЗначению(,,"ДокументВладелец",ВыбранРасчет); Пока ВыборкаТехКарт.ПолучитьДокумент()=1 Цикл Если ВыборкаТехКарт.ПометкаУдаления()=1 Тогда Продолжить; КонецЕсли; Если ВыборкаТехКарт.Вид()<>"ТехнологическаяКарта" Тогда Продолжить; КонецЕсли; ТехКарта=ВыборкаТехКарт.ТекущийДокумент(); ЕстьТехКарта=1; Прервать; КонецЦикла; итбСтроки=СоздатьОбъект("ИндексированнаяТаблица"); итбСтроки.НоваяКолонка("Дизайн"); итбСтроки.НоваяКолонка("РазверткаДизайна"); итбСтроки.НоваяКолонка("ВысотаДизайна"); итбСтроки.НоваяКолонка("ШиринаДизайна"); итбСтроки.НоваяКолонка("Кво"); итбСтроки.НоваяКолонка("КвоДорожек"); итбСтроки.НоваяКолонка("ШиринаДорожки"); итбСтроки.НоваяКолонка("ШагПечати"); итбСтроки.НоваяКолонка("ШиринаФормы"); итбСтроки.НоваяКолонка("ВысотаФормы"); итбСтроки.НоваяКолонка("СостояниеДизайна"); итбСтроки.НоваяКолонка("ВидНамотки"); итбСтроки.НоваяКолонка("ЕстьМетка"); итбСтроки.НоваяКолонка("РасположениеМетки"); итбСтроки.НоваяКолонка("ВысотаМетки"); итбСтроки.НоваяКолонка("ШиринаМетки"); итбСтроки.НоваяКолонка("РастояниеМеждуМетками"); итбСтроки.НоваяКолонка("РастояниеОтРисункаДоМетки"); итбСтроки.НоваяКолонка("ЕстьПоля"); итбСтроки.НоваяКолонка("ПолеСлева"); итбСтроки.НоваяКолонка("ПолеСправа"); итбСтроки.НоваяКолонка("ТипПакета"); итбСтроки.НоваяКолонка("ТипРучки"); итбСтроки.НоваяКолонка("Вес1ТысячиПродукции"); итбСтроки.НоваяКолонка("БоковаяЗакладка"); итбСтроки.НоваяКолонка("ВерхняяЗакладка"); итбСтроки.НоваяКолонка("НижняяЗакладка"); итбСтроки.НоваяКолонка("ШиринаРучки"); итбСтроки.НоваяКолонка("ДлинаРучки"); итбСтроки.НоваяКолонка("ДлинаДна"); итбСтроки.НоваяКолонка("Заказчик"); итбСтроки.НоваяКолонка("Красочность"); Если ИТСтрокиДокумента.НомерИндекса("инЗаказчик")=0 Тогда ИТСтрокиДокумента.ДобавитьИндекс("инЗаказчик","Заказчик"); КонецЕсли; Для НС=1 По тбКонтрагенты.КоличествоСтрок() Цикл ТекЗаказчик=тбКонтрагенты.ПолучитьЗначение(НС,"Контрагент"); ОбъемТекЗаказчика=тбКонтрагенты.ПолучитьЗначение(НС,"УстановленныйОбъем"); ИТСтрокиДокумента.УстановитьФильтр(ТекЗаказчик,ТекЗаказчик,"инЗаказчик"); ИТСтрокиДокумента.ВНачало(); Пока ИТСтрокиДокумента.СледующаяСтрока()=1 Цикл итбСтроки.НоваяСтрока(); итбСтроки.Дизайн=ИТСтрокиДокумента.Дизайн; итбСтроки.РазверткаДизайна=ИТСтрокиДокумента.РазверткаДизайна; итбСтроки.ВысотаДизайна=ИТСтрокиДокумента.ВысотаДизайна; итбСтроки.ШиринаДизайна=ИТСтрокиДокумента.ШиринаДизайна; итбСтроки.КвоДорожек=ИТСтрокиДокумента.КолДорожек; итбСтроки.ШиринаДорожки=ИТСтрокиДокумента.ШиринаДорожки; итбСтроки.ШагПечати=ИТСтрокиДокумента.ШагПечати; итбСтроки.ШиринаФормы = ИТСтрокиДокумента.ШиринаФормы; итбСтроки.ВысотаФормы=ИТСтрокиДокумента.ВысотаФормы; итбСтроки.СостояниеДизайна = ИТСтрокиДокумента.СостояниеДизайна; итбСтроки.ВидНамотки = ИТСтрокиДокумента.ВидНамотки; итбСтроки.ЕстьМетка = ИТСтрокиДокумента.ЕстьМетка; итбСтроки.РасположениеМетки = ИТСтрокиДокумента.РасположениеМетки; итбСтроки.ВысотаМетки = ИТСтрокиДокумента.ВысотаМетки; итбСтроки.ШиринаМетки = ИТСтрокиДокумента.ШиринаМетки; итбСтроки.РастояниеМеждуМетками = ИТСтрокиДокумента.РастояниеМеждуМетками; итбСтроки.РастояниеОтРисункаДоМетки = ИТСтрокиДокумента.РастояниеОтРисункаДоМетки; итбСтроки.ЕстьПоля=ИТСтрокиДокумента.ЕстьПоля; итбСтроки.ПолеСлева=ИТСтрокиДокумента.ПолеСлева; итбСтроки.ПолеСправа=ИТСтрокиДокумента.ПолеСправа; итбСтроки.ТипПакета = ИТСтрокиДокумента.ТипПакета; ВесТысячи = ИТСтрокиДокумента.Вес1ТысячиПродукции; итбСтроки.Вес1ТысячиПродукции = ВесТысячи; итбСтроки.ТипРучки = ИТСтрокиДокумента.ТипРучки; итбСтроки.БоковаяЗакладка=ИТСтрокиДокумента.БоковаяЗакладка; итбСтроки.ВерхняяЗакладка=ИТСтрокиДокумента.ВерхняяЗакладка; итбСтроки.НижняяЗакладка=ИТСтрокиДокумента.НижняяЗакладка; итбСтроки.ШиринаРучки=ИТСтрокиДокумента.ШиринаРучки; итбСтроки.ДлинаРучки=ИТСтрокиДокумента.ДлинаРучки; итбСтроки.ДлинаДна=ИТСтрокиДокумента.ДлинаДна; итбСтроки.Заказчик = ИТСтрокиДокумента.Заказчик; Если КакСчитаем=СчитаемОтТиража Тогда ОбъемТекЗаказчикаВкг=ОбъемТекЗаказчика*ВесТысячи; Иначе ОбъемТекЗаказчикаВкг=ОбъемТекЗаказчика; КонецЕсли; итбСтроки.Кво=ИТСтрокиДокумента.КоэфДизайнаВЗаказе*ОбъемТекЗаказчикаВкг; ТаблицаКрасок=ИТСтрокиДокумента.ТаблицаКрасок; Красочность=0; ТаблицаКрасок.ВыбратьСтроки(); Пока ТаблицаКрасок.ПолучитьСтроку() = 1 Цикл Если(ПустоеЗначение(ТаблицаКрасок.Краска)=0) Тогда Если ПустоеЗначение(ТаблицаКрасок.ПроцентЗапечатки)=0 Тогда Красочность=Красочность+1 КонецЕсли; КонецЕсли; КонецЦикла; итбСтроки.Красочность=Красочность; КонецЦикла; ИТСтрокиДокумента.ВыключитьФильтр("инЗаказчик"); КонецЦикла; ИТСтрокиДокумента.ВыключитьФильтр("инЗаказчик"); ИТЗНормыРасхода=СоздатьОбъект("ИндексированнаяТаблица"); ИТЗНормыРасхода.НоваяКолонка("Идентификатор"); ИТЗНормыРасхода.НоваяКолонка("Значение"); ИТКраски=СоздатьОбъект("ИндексированнаяТаблица"); ИТКраски.НоваяКолонка("Краска"); ИТКраски.НоваяКолонка("Анилокс"); ИТКраски.НоваяКолонка("ПроцентЗапечатки"); ИТКраски.НоваяКолонка("РасходНорма"); ИТКраски.НоваяКолонка("РасходФакт"); ИТКраски.ДобавитьИндекс("инКраска","Краска"); ЗаполнитьТаблицыДляТехКарты(ИТЗНормыРасхода,ИТКраски); ИТЗНормыРасхода.ДобавитьИндекс("инИдентификатор","Идентификатор"); список=СоздатьОбъект("СписокЗначений"); ОткрытьТехКартуБезИзменения=1; ОткрытьТехКарту=2; Поз=0; Выбор=0; Если ПустоеЗначение(ТехКарта)=0 Тогда Если (ТехКарта.фПодписьМенеджера+ТехКарта.фПодписьТехнолога+ТехКарта.фПодписьПлановогоОтдела)<>0 Тогда Выбор=ОткрытьТехКартуБезИзменения; КонецЕсли; КонецЕсли; Если ПустоеЗначение(Выбор)=1 Тогда Выбор=ОткрытьТехКарту; КонецЕсли; ТабЧасть=СоздатьОбъект("ИндексированнаяТаблица"); Если Выбор=ОткрытьТехКартуБезИзменения Тогда ОткрытьФорму(ТехКарта); ИначеЕсли (Выбор=ОткрытьТехКарту) Тогда КонтекстТехКарты="КонтекстТехКарты"; Если ПустоеЗначение(ТехКарта)=0 Тогда ОткрытьФорму(ТехКарта,КонтекстТехКарты); Если ТипЗначенияСтр(КонтекстТехКарты)<>"ГрупповойКонтекст" Тогда Сообщить("Ошибка при открытии тех.карты"); Возврат; КонецЕсли; Иначе ОткрытьФорму("Документ.ТехнологическаяКарта",КонтекстТехКарты); Если ТипЗначенияСтр(КонтекстТехКарты)<>"ГрупповойКонтекст" Тогда Сообщить("Ошибка при создании тех.карты"); Возврат; КонецЕсли; КонтекстТехКарты.ДатаДок=РабочаяДата(); КонтекстТехКарты.Фирма=Фирма; КонтекстТехКарты.РасчетВладелец=ВыбранРасчет; глУстановитьНомер(КонтекстТехКарты,1); КонецЕсли; Если ПустоеЗначение(КонтекстТехКарты)=1 Тогда Возврат; КонецЕсли; //ТекЗаказчик=тбКонтрагенты.ПолучитьЗначение(1,"Контрагент"); КонтекстТехКарты.Контрагент=Контрагент; КонтекстТехКарты.Контрагент1=Контрагент1; КонтекстТехКарты.Контрагент2=Контрагент2; КонтекстТехКарты.Контрагент3=Контрагент3; КонтекстТехКарты.Контрагент4=Контрагент4; КонтекстТехКарты.Контрагент5=Контрагент5; КонтекстТехКарты.Менеджер=ВыбранМенеджер; КонтекстТехКарты.фПечать=фПечать; КонтекстТехКарты.фЛаминация=фЛаминация; КонтекстТехКарты.фБабинорезка=фБабинорезка; КонтекстТехКарты.фПакетоделание=фПакетоделание; КонтекстТехКарты.ВидПленки=ВидПленки; КонтекстТехКарты.ПечатнаяМашина=ПечатнаяМашина; КонтекстТехКарты.ШиринаРезиновогоВала=ШиринаРезиновогоВала; Если фПечать=1 Тогда Если ПустоеЗначение(КонтекстТехКарты.ВидПечати)=1 Тогда Если фЛаминация=1 Тогда КонтекстТехКарты.ВидПечати=Перечисление.ВидыПечати.Обратная; Иначе КонтекстТехКарты.ВидПечати=Перечисление.ВидыПечати.Прямая; КонецЕсли; КонецЕсли; Иначе КонтекстТехКарты.ВидПечати=""; КонецЕсли; КонтекстТехКарты.ОсновнойМатериал=ОсновнойМатериал; КонтекстТехКарты.ШиринаСырьяОсновногоМатериала=ШиринаСырьяОсновногоМатериала; КонтекстТехКарты.ТолщинаОсновногоМатериала=ТолщинаОсновногоМатериала; КонтекстТехКарты.МатериалЛаминации1=МатериалЛаминации1; КонтекстТехКарты.ШиринаСырьяМатериалаЛаминации1=ШиринаСырьяМатериалаЛаминации1; КонтекстТехКарты.ТолщинаМатериалаЛаминации1=ТолщинаМатериалаЛаминации1; КонтекстТехКарты.МатериалЛаминации2=МатериалЛаминации2; КонтекстТехКарты.ШиринаСырьяМатериалаЛаминации2=ШиринаСырьяМатериалаЛаминации2; КонтекстТехКарты.ТолщинаМатериалаЛаминации2=ТолщинаМатериалаЛаминации2; Если ВыбранКакСчитаем=СчитаемОтМассы Тогда ИскомКол="Масса"; ИначеЕсли ВыбранКакСчитаем=СчитаемОтТиража Тогда ИскомКол="Тираж"; Иначе Возврат; КонецЕсли; НомСтр=""; ОбщаяРасчетнаяТаблица.НайтиЗначение(ОбщийПродажныйОбъем,НомСтр,ИскомКол); Если НомСтр=0 Тогда Возврат; КонецЕсли; ОбщаяРасчетнаяТаблица.ПолучитьСтрокуПоНомеру(НомСтр); КонтекстТехКарты.НормаОсновногоМатериала=ОбщаяРасчетнаяТаблица.НормаОсновногоМатериала; КонтекстТехКарты.НормаМатериалаЛаминации1=ОбщаяРасчетнаяТаблица.НормаМатериалаЛаминации1; КонтекстТехКарты.НормаМатериалаЛаминации2=ОбщаяРасчетнаяТаблица.НормаМатериалаЛаминации2; КонтекстТехКарты.БольшаяТаблицаРасположенияДизайновНаВалуСтрокой=СокрЛП(БольшаяТаблицаРасположенияДизайновНаВалуСтрокой); ИТЗНормыРасхода.ВыбратьСтроки(); Пока ИТЗНормыРасхода.ПолучитьСтроку() = 1 Цикл НаимАтрибута=ИТЗНормыРасхода.Идентификатор; Значение=ИТЗНормыРасхода.Значение; Попытка КонтекстТехКарты.УстановитьАтрибут(НаимАтрибута,Значение); Исключение Сообщить("Нет атрибута -> "+НаимАтрибута); КонецПопытки; КонецЦикла; ИТКраскиТехКарты=СоздатьОбъект("ИндексированнаяТаблица"); ИТКраскиТехКарты.НоваяКолонка("Краска"); ИТКраскиТехКарты.НоваяКолонка("Анилокс"); ИТКраскиТехКарты.НоваяКолонка("ПроцентЗапечатки"); ИТКраскиТехКарты.НоваяКолонка("РасходНорма"); ИТКраскиТехКарты.НоваяКолонка("РасходФакт"); ИТКраскиТехКарты.ДобавитьИндекс("инКраска","Краска"); ИТКраскиТехКарты.УдалитьСтроки(); Для НС=1 По 8 Цикл ИТКраскиТехКарты.НоваяСтрока(); КонецЦикла; Для НС=1 По 8 Цикл Для НК=1 По ИТКраскиТехКарты.КоличествоКолонок() Цикл ИмяКолонки=ИТКраскиТехКарты.ИмяКолонки(НК); ИдАтрибута=ИмяКолонки+НС; Значение=КонтекстТехКарты.ПолучитьАтрибут(ИдАтрибута); ИТКраскиТехКарты.УстановитьЗначение(НС,ИмяКолонки,Значение); КонецЦикла; КонецЦикла; ИТКраскиТехКарты.ВыбратьСтроки(); Пока ИТКраскиТехКарты.ПолучитьСтроку() = 1 Цикл ТекКраска=ИТКраскиТехКарты.Краска; НС=ИТКраски.НайтиСтроку("инКраска",ТекКраска); Если НС=0 Тогда ИТКраскиТехКарты.Краска=""; ИТКраскиТехКарты.Анилокс=""; ИТКраскиТехКарты.ПроцентЗапечатки=0; ИТКраскиТехКарты.РасходНорма=0; ИТКраскиТехКарты.РасходФакт=0; Иначе ИТКраскиТехКарты.Анилокс=ИТКраски.ПолучитьЗначение(НС,"Анилокс"); ИТКраскиТехКарты.ПроцентЗапечатки=ИТКраски.ПолучитьЗначение(НС,"ПроцентЗапечатки"); ИТКраскиТехКарты.РасходНорма=ИТКраски.ПолучитьЗначение(НС,"РасходНорма"); КонецЕсли; КонецЦикла; ИТКраски.ВыбратьСтроки(); Пока ИТКраски.ПолучитьСтроку() = 1 Цикл ТекКраска=ИТКраски.Краска; НС=ИТКраскиТехКарты.НайтиСтроку("инКраска",ТекКраска); Если НС=0 Тогда НС=ИТКраскиТехКарты.НайтиСтроку("инКраска",""); ИТКраскиТехКарты.УстановитьЗначение(НС,"Краска",ИТКраски.Краска); ИТКраскиТехКарты.УстановитьЗначение(НС,"Анилокс",ИТКраски.Анилокс); ИТКраскиТехКарты.УстановитьЗначение(НС,"ПроцентЗапечатки",ИТКраски.ПроцентЗапечатки); ИТКраскиТехКарты.УстановитьЗначение(НС,"РасходНорма",ИТКраски.РасходНорма); КонецЕсли; КонецЦикла; Для НС=1 По 8 Цикл Для НК=1 По ИТКраскиТехКарты.КоличествоКолонок() Цикл ИмяКолонки=ИТКраскиТехКарты.ИмяКолонки(НК); ИдАтрибута=ИмяКолонки+НС; Значение=ИТКраскиТехКарты.ПолучитьЗначение(НС,ИмяКолонки); КонтекстТехКарты.УстановитьАтрибут(ИдАтрибута,Значение); КонецЦикла; КонецЦикла; ТабЧасть.Загрузить(КонтекстТехКарты); ТабЧасть.УдалитьСтроки(); ТабЧасть.ВНачало(); ТабЧасть.Выгрузить(КонтекстТехКарты); КонтекстТехКарты.ЗагрузитьИзТаблицы(итбСтроки); Иначе Возврат; КонецЕсли; КонецПроцедуры //====================================================================== Процедура ОткрытьКПЗ() Перем Тз; Если фПодписьСогласованиеЦены<>1 Тогда Предупреждение("Нет подписи о согласовании цены."); Возврат; КонецЕсли; ТекКонтрагент=тбКонтрагенты.ПолучитьЗначение(ТекСтрокатбКонтрагенты,"Контрагент"); ТекМенеджер=Менеджер; ТекЗаказ=тбКонтрагенты.ПолучитьЗначение(ТекСтрокатбКонтрагенты,"ЗаказВакиля"); Если ПустоеЗначение(ТекЗаказ)=1 Тогда Предупреждение("Ошибка! |Перезапишите Документ."); Возврат; КонецЕсли; Если ТекЗаказ.Вид()="ПредварительныйЗаказ" Тогда ЗаписатьДокумент(); КонецЕсли; ПередаваемыеПараметры=_Новый("СписокЗначений"); ПередаваемыеПараметры.Установить("Фирма",Фирма); ПередаваемыеПараметры.Установить("Контрагент",ТекКонтрагент); ПередаваемыеПараметры.Установить("Менеджер",ТекМенеджер); ПередаваемыеПараметры.Установить("ЗаказВакиля",ТекЗаказ); ПередаваемыеПараметры.Установить("НашаФирма",НашаФирма); Если НашаФирма<>Константа.ПодразделениеПакеты Тогда ОткрытьФорму("Обработка.ОстаткиТМЦ_по_Заказам",ПередаваемыеПараметры); ИначеЕсли ПустоеЗначение(ТекЗаказ)=0 Тогда Тз=_Новый("ТаблицаЗначений"); Тз.НоваяКолонка("Заказ"); Тз.НоваяКолонка("ТМЦ"); Тз.НоваяКолонка("Едизм"); Тз.НоваяКолонка("Кво"); Тз.НоваяКолонка("Валюта"); Тз.НоваяКолонка("Цена"); Если ТекЗаказ.ЦенаПоДокументам<>0 Тогда УстанЦена =ТекЗаказ.ЦенаПоДокументам; Иначе Если ТекЗаказ.ФормыПродаютсяОтдельно=1 Тогда УстанЦена = ТекЗаказ.УстановленнаяЦенаБезФорм; Иначе УстанЦена = ТекЗаказ.УстановленнаяЦенаПродажи; КонецЕсли; КонецЕсли; Если Найти(ВРег(СокрЛП(ТекЗаказ.ЕдИзм.Наименование)),"ШТ")<>0 Тогда УстанЦена=УстанЦена/1000; КонецЕсли; ТекЗаказ.ВыбратьСтроки(); Пока ТекЗаказ.ПолучитьСтроку() = 1 Цикл Тз.НоваяСтрока(); Тз.ТМЦ=ТекЗаказ.ТМЦ; Тз.ЕдИзм=ТекЗаказ.Ед; Тз.Цена=УстанЦена; Тз.Кво=ТекЗаказ.ПроектныйОбъемЗаказа*ТекЗаказ.КоэфДизайнаВЗаказе; КонецЦикла; ПередаваемыеПараметры.Установить("ТЗ",ТЗ); ОткрытьФорму("Документ.КПЗ",ПередаваемыеПараметры); Иначе Сообщить(" Резрешение на отгрузку не может быть создано "); КонецЕсли; КонецПроцедуры // ОткрытьКПЗ //====================================================================== Процедура ОткрытьСчет() Если фПодписьСогласованиеЦены<>1 Тогда ТекстПредупреждения="Нет подписи |о согласовании цены с заказчиком! |Счет не может быть создан!"; Предупреждение(ТекстПредупреждения); Возврат; КонецЕсли; Если (Оплата1=0) и (Оплата2=0) Тогда Предупреждение("По расчету в условиях оплаты Предоплаты =0. |Счет на предоплату не создается "); Возврат; КонецЕсли; Если Безнал=0 Тогда Предупреждение("По расчету в условиях Безнал =0. |Счет на предоплату не создается "); Возврат; КонецЕсли; ТекКонтрагент=тбКонтрагенты.ПолучитьЗначение(ТекСтрокатбКонтрагенты,"Контрагент"); ТекМенеджер=Менеджер; ТекЗаказ=тбКонтрагенты.ПолучитьЗначение(ТекСтрокатбКонтрагенты,"ЗаказВакиля"); ПередаваемыеПараметры=_Новый("СписокЗначений"); ПередаваемыеПараметры.Установить("Фирма",Фирма); ПередаваемыеПараметры.Установить("Контрагент",ТекКонтрагент); ПередаваемыеПараметры.Установить("Менеджер",ТекМенеджер); ПередаваемыеПараметры.Установить("ЗаказВакиля",ТекЗаказ); ОткрытьФорму("Обработка.Создание_СФ_из_Расчета",ПередаваемыеПараметры); КонецПроцедуры // ОткрытьСчет //====================================================================== Функция СоздатьИндексТаблицуЦены(ТаблицаРасчетнаяМасса,СебистоимостьПечатныхФормТекЗаказчика, итЦеныВКг,итЦеныВШт,итЦеныБезФормВКг,итЦеныБезФормВШт,КоллекцияЗаголовковВКг,КоллекцияЗаголовковВШт) КвоОбъемов=ТаблицаРасчетнаяМасса.КоличествоСтрок(); итЦеныВКг.Очистить(); итЦеныВКг.НоваяКолонка("Рентабельность"); итЦеныВШт.Очистить(); итЦеныВШт.НоваяКолонка("Рентабельность"); итЦеныБезФормВКг.Очистить(); итЦеныБезФормВКг.НоваяКолонка("Рентабельность"); итЦеныБезФормВШт.Очистить(); итЦеныБезФормВШт.НоваяКолонка("Рентабельность"); Для НомОбъема=1 По КвоОбъемов Цикл ИДКолонки="НомерОбъема_"+НомОбъема; итЦеныВКг.НоваяКолонка(ИДКолонки); итЦеныВШт.НоваяКолонка(ИДКолонки); итЦеныБезФормВКг.НоваяКолонка(ИДКолонки); итЦеныБезФормВШт.НоваяКолонка(ИДКолонки); КонецЦикла; //создаем строки итЦеныВКг.НоваяСтрока(); итЦеныВКг.Рентабельность = "Нерентабельно"; итЦеныВШт.НоваяСтрока(); итЦеныВШт.Рентабельность = "Нерентабельно"; итЦеныВКг.НоваяСтрока(); итЦеныВКг.Рентабельность = "Прибыльно"; итЦеныВШт.НоваяСтрока(); итЦеныВШт.Рентабельность = "Прибыльно"; итЦеныВКг.НоваяСтрока(); итЦеныВКг.Рентабельность = "Премиально"; итЦеныВШт.НоваяСтрока(); итЦеныВШт.Рентабельность = "Премиально"; итЦеныБезФормВКг.НоваяСтрока(); итЦеныБезФормВКг.Рентабельность = "Нерентабельно"; итЦеныБезФормВШт.НоваяСтрока(); итЦеныБезФормВШт.Рентабельность = "Нерентабельно"; итЦеныБезФормВКг.НоваяСтрока(); итЦеныБезФормВКг.Рентабельность = "Прибыльно"; итЦеныБезФормВШт.НоваяСтрока(); итЦеныБезФормВШт.Рентабельность = "Прибыльно"; итЦеныБезФормВКг.НоваяСтрока(); итЦеныБезФормВКг.Рентабельность = "Премиально"; итЦеныБезФормВШт.НоваяСтрока(); итЦеныБезФормВШт.Рентабельность = "Премиально"; //Заполняем Коллекцию заголовков ИДКолонки="Рентабельность"; ИДКлюча=ИДКолонки; Значение="Рентабельность\Объем(кг)"; КоллекцияЗаголовковВКг.Добавить(Значение,ИДКлюча); Значение="Рентабельность\Объем(шт)"; КоллекцияЗаголовковВШт.Добавить(Значение,ИДКлюча); Для НомОбъема=1 По КвоОбъемов Цикл ИДКолонки="НомерОбъема_"+НомОбъема; ИДКлюча=ИДКолонки; ТекМасса=ТаблицаРасчетнаяМасса.ПолучитьЗначение(НомОбъема,"Масса"); ТекТираж=ТаблицаРасчетнаяМасса.ПолучитьЗначение(НомОбъема,"Тираж"); КоллекцияЗаголовковВКг.Добавить(ТекМасса,ИДКлюча); КоллекцияЗаголовковВШт.Добавить(ТекТираж,ИДКлюча); КонецЦикла; Для НомОбъема=1 По КвоОбъемов Цикл ИДКолонки="НомерОбъема_"+НомОбъема; ТекМасса=ТаблицаРасчетнаяМасса.ПолучитьЗначение(НомОбъема,"Масса"); ТекТираж=ТаблицаРасчетнаяМасса.ПолучитьЗначение(НомОбъема,"Тираж"); //ТипЦены="Нерентабельно"; НС=1; Стоимость=ТаблицаРасчетнаяМасса.ПолучитьЗначение(НомОбъема,"ПродСтоимостьНеРентабельно"); СтоимостьБезКлише=Стоимость-СебистоимостьПечатныхФормТекЗаказчика; ЦенаЗаКГ= Окр(Стоимость/ТекМасса,2,1); ЦенаЗаКГБезКлише= Окр(СтоимостьБезКлише/ТекМасса,2,1); ЦенаЗаШТ=Окр(Стоимость/ТекТираж,4,1); ЦенаЗаШТБезКлише=Окр(СтоимостьБезКлише/ТекТираж,4,1); итЦеныВКг.УстановитьЗначение(НС,ИДКолонки,ЦенаЗаКГ); итЦеныВШт.УстановитьЗначение(НС,ИДКолонки,ЦенаЗаШТ); итЦеныБезФормВКг.УстановитьЗначение(НС,ИДКолонки,ЦенаЗаКГБезКлише); итЦеныБезФормВШт.УстановитьЗначение(НС,ИДКолонки,ЦенаЗаШТБезКлише); //ТипЦены="Прибыльно"; НС=2; Стоимость=ТаблицаРасчетнаяМасса.ПолучитьЗначение(НомОбъема,"ПродСтоимостьПрибыльно"); СтоимостьБезКлише=Стоимость-СебистоимостьПечатныхФормТекЗаказчика; ЦенаЗаКГ= Окр(Стоимость/ТекМасса,2,1); ЦенаЗаКГБезКлише= Окр(СтоимостьБезКлише/ТекМасса,2,1); ЦенаЗаШТ=Окр(Стоимость/ТекТираж,4,1); ЦенаЗаШТБезКлише=Окр(СтоимостьБезКлише/ТекТираж,4,1); итЦеныВКг.УстановитьЗначение(НС,ИДКолонки,ЦенаЗаКГ); итЦеныВШт.УстановитьЗначение(НС,ИДКолонки,ЦенаЗаШТ); итЦеныБезФормВКг.УстановитьЗначение(НС,ИДКолонки,ЦенаЗаКГБезКлише); итЦеныБезФормВШт.УстановитьЗначение(НС,ИДКолонки,ЦенаЗаШТБезКлише); //ТипЦены="Премиально"; НС=3; Стоимость=ТаблицаРасчетнаяМасса.ПолучитьЗначение(НомОбъема,"ПродСтоимостьПремиально"); СтоимостьБезКлише=Стоимость-СебистоимостьПечатныхФормТекЗаказчика; ЦенаЗаКГ= Окр(Стоимость/ТекМасса,2,1); ЦенаЗаКГБезКлише= Окр(СтоимостьБезКлише/ТекМасса,2,1); ЦенаЗаШТ=Окр(Стоимость/ТекТираж,4,1); ЦенаЗаШТБезКлише=Окр(СтоимостьБезКлише/ТекТираж,4,1); итЦеныВКг.УстановитьЗначение(НС,ИДКолонки,ЦенаЗаКГ); итЦеныВШт.УстановитьЗначение(НС,ИДКолонки,ЦенаЗаШТ); итЦеныБезФормВКг.УстановитьЗначение(НС,ИДКолонки,ЦенаЗаКГБезКлише); итЦеныБезФормВШт.УстановитьЗначение(НС,ИДКолонки,ЦенаЗаШТБезКлише); КонецЦикла; Возврат 1; КонецФункции // //------------------------------------------------------------------------------------------------------------ Процедура ОткрытьКомПредложение() Если Выбран()=0 Тогда Предупреждение("Необходимо сохранить Документ!"); Возврат; КонецЕсли; Если ПустоеЗначение(РасчетСделан)=1 Тогда Предупреждение("Расчет необходимо пересчитать! |Коммерческое Предложение не может быть создано"); Возврат; КонецЕсли; ВыбранВалюта=Валюта; ТекФирма=Фирма; ВыбранРасчет=ТекущийДокумент(); ТекНашаФирма=НашаФирма; ТекЗаказчик=тбКонтрагенты.ПолучитьЗначение(ТекСтрокатбКонтрагенты,"Контрагент"); ТекМенеджер=тбКонтрагенты.ПолучитьЗначение(ТекСтрокатбКонтрагенты,"Менеджер"); ТекфФормыПродаютьсяОтдельно=тбКонтрагенты.ПолучитьЗначение(ТекСтрокатбКонтрагенты,"фДругаяСтоимостьФорм"); СебистоимостьПечатныхФормТекЗаказчика=тбКонтрагенты.ПолучитьЗначение(ТекСтрокатбКонтрагенты,"СебистоимостьПечатныхФорм"); ТаблицаРасчетнаяМасса=тбКонтрагенты.ПолучитьЗначение(ТекСтрокатбКонтрагенты,"тбРасчетнаяМасса"); ОбщиеМетоды=СоздатьОбъект("Общие.ОбщиеМетоды"); КомПредложение=ОбщиеМетоды.ВернутьКомПредложениеПоРасчету(ВыбранРасчет,ТекЗаказчик); Если ПустоеЗначение(КомПредложение)=0 Тогда ОткрытьФорму(КомПредложение); Иначе итЦеныВКг=СоздатьОбъект("ИндексированнаяТаблица"); итЦеныВШт=СоздатьОбъект("ИндексированнаяТаблица"); итЦеныБезФормВКг=СоздатьОбъект("ИндексированнаяТаблица"); итЦеныБезФормВШт=СоздатьОбъект("ИндексированнаяТаблица"); КоллекцияЗаголовковВКг=СоздатьОбъект("АссоциативныйВектор"); КоллекцияЗаголовковВШт=СоздатьОбъект("АссоциативныйВектор"); СоздатьИндексТаблицуЦены(ТаблицаРасчетнаяМасса,СебистоимостьПечатныхФормТекЗаказчика, итЦеныВКг,итЦеныВШт,итЦеныБезФормВКг,итЦеныБезФормВШт,КоллекцияЗаголовковВКг,КоллекцияЗаголовковВШт); список=СоздатьОбъект("СписокЗначений"); Создать=1; Присоеденить=2; Поз=0; Выбор=0; итВыборкаКомПредложений=ОбщиеМетоды.ВернутьВыборкуКомПредлженийПоУсловию(ТекФирма,ТекЗаказчик, КакСчитаем,ТекфФормыПродаютьсяОтдельно,ВыбранРасчет); Если итВыборкаКомПредложений.КоличествоСтрок()=0 Тогда Выбор=Создать; КонецЕсли; Если ПустоеЗначение(Выбор)=1 Тогда Представление1="Создать Ком.Предложение"; Представление2="Присоеденить к существующему Ком.Предложению"; Список.ДобавитьЗначение(Создать,Представление1); Список.ДобавитьЗначение(Присоеденить,Представление2); Если Список.ВыбратьЗначение(Выбор,"Сделайте Выбор",Поз,60,1)<>1 Тогда Возврат; КонецЕсли; КонецЕсли; Если (Выбор=Присоеденить)и(итВыборкаКомПредложений.КоличествоСтрок()>0) Тогда КоллекцияЗаголовков=СоздатьОбъект("АссоциативныйВектор"); КоллекцияЗаголовков.Добавить("Ком.предложение","Ссылка"); ОтветПоУмолчанию="Отмена"; ПередаваемКоллекция=СоздатьОбъект("АссоциативныйВектор"); ПередаваемКоллекция.Добавить(итВыборкаКомПредложений,"Таблица"); ПередаваемКоллекция.Добавить(КоллекцияЗаголовков,"КоллекцияЗаголовков"); ПередаваемКоллекция.Добавить(1,"ВыбраннаяСтрока"); ПередаваемКоллекция.Добавить(ОтветПоУмолчанию,"Ответ"); Параметр=ПередаваемКоллекция; ОткрытьФормуМодально("Обработка.ТабличномПолеДляВыбора",Параметр); ПолученКоллекция=Параметр; Ответ=ПолученКоллекция.Ответ; Если Ответ<>"ОК" Тогда Возврат; КонецЕсли; ВыбраннаяСтрока=ПолученКоллекция.ВыбраннаяСтрока; Если ПустоеЗначение(ВыбраннаяСтрока)=1 Тогда Возврат; КонецЕсли; КомПредложение=итВыборкаКомПредложений.ПолучитьЗначение(ВыбраннаяСтрока,"Ссылка"); Если ПустоеЗначение(КомПредложение)=1 Тогда Возврат; КонецЕсли; КонецЕсли; Если КакСчитаем=СчитаемОтМассы Тогда ИТЦены=итЦеныВКг; КоллекцияЗаголовков=КоллекцияЗаголовковВКг; ИначеЕсли КакСчитаем=СчитаемОтТиража Тогда ИТЦены=итЦеныВШт; КоллекцияЗаголовков=КоллекцияЗаголовковВШт; Иначе Возврат; КонецЕсли; ОтветПоУмолчанию="Отмена"; ПередаваемКоллекция=СоздатьОбъект("АссоциативныйВектор"); ПередаваемКоллекция.Добавить(ИТЦены,"Таблица"); ПередаваемКоллекция.Добавить(КоллекцияЗаголовков,"КоллекцияЗаголовков"); ПередаваемКоллекция.Добавить(1,"ВыбраннаяСтрока"); ПередаваемКоллекция.Добавить(ОтветПоУмолчанию,"Ответ"); Параметр=ПередаваемКоллекция; ОткрытьФормуМодально("Обработка.ТабличномПолеДляВыбора",Параметр); ПолученКоллекция=Параметр; Ответ=ПолученКоллекция.Ответ; Если Ответ<>"ОК" Тогда Возврат; КонецЕсли; ВыбраннаяСтрока=ПолученКоллекция.ВыбраннаяСтрока; Если ПустоеЗначение(ВыбраннаяСтрока)=1 Тогда Возврат; КонецЕсли; КвоОбъемов=ТаблицаРасчетнаяМасса.КоличествоСтрок(); КоллекцияОбъемов=СоздатьОбъект("АссоциативныйВектор"); Для НомОбъема=1 По КвоОбъемов Цикл ИДКлюча="НомерОбъема_"+НомОбъема; ТекМасса=Окр(ТаблицаРасчетнаяМасса.ПолучитьЗначение(НомОбъема,"Масса"),0,1); ТекТираж=Окр(ТаблицаРасчетнаяМасса.ПолучитьЗначение(НомОбъема,"Тираж"),0,1); Объем=СоздатьОбъект("АссоциативныйВектор"); Объем.Добавить(ТекМасса,"Масса"); Объем.Добавить(ТекТираж,"Тираж"); КоллекцияОбъемов.Добавить(Объем,ИДКлюча); КонецЦикла; КоллекцияЦен=СоздатьОбъект("АссоциативныйВектор"); Для НО=0 По (КвоОбъемов-1) Цикл ИДКолонки=КоллекцияОбъемов.ПолучитьКлюч(НО); ЦенаЗаКг=итЦеныВКг.ПолучитьЗначение(ВыбраннаяСтрока,ИДКолонки); ЦенаЗаШт=итЦеныВШт.ПолучитьЗначение(ВыбраннаяСтрока,ИДКолонки); ЦенаБезФормЗаКг=итЦеныБезФормВКг.ПолучитьЗначение(ВыбраннаяСтрока,ИДКолонки); ЦенаБезФормЗаШт=итЦеныБезФормВШт.ПолучитьЗначение(ВыбраннаяСтрока,ИДКолонки); Цены=СоздатьОбъект("АссоциативныйВектор"); Цены.Добавить(ЦенаЗаКг,"ЦенаЗаКг"); Цены.Добавить(ЦенаЗаШт,"ЦенаЗаШт"); Цены.Добавить(ЦенаБезФормЗаКг,"ЦенаБезФормЗаКг"); Цены.Добавить(ЦенаБезФормЗаШт,"ЦенаБезФормЗаШт"); КоллекцияЦен.Добавить(Цены,ИДКолонки); КонецЦикла; ОбъектКомПредложение=СоздатьОбъект("ДокументКомПредложение"); КонтекстРасчета=глВернутьКонтекст(Контекст); КонтекстКомПредложения="РасчетЗаказа"; Если ПустоеЗначение(КомПредложение)=0 Тогда ОткрытьФорму(КомПредложение,КонтекстКомПредложения); Если ТипЗначенияСтр(КонтекстКомПредложения)<>"ГрупповойКонтекст" Тогда Сообщить("Ошибка при открытии КомПредложения!"); СтатусВозврата(0); Возврат; КонецЕсли; ОбъектКомПредложение.УстановитьДокумент(КонтекстКомПредложения); Иначе ОткрытьФорму("Документ.КомПредложение",КонтекстКомПредложения); Если ТипЗначенияСтр(КонтекстКомПредложения)<>"ГрупповойКонтекст" Тогда Сообщить("Ошибка при открытии КомПредложения!"); СтатусВозврата(0); Возврат; КонецЕсли; ОбъектКомПредложение.УстановитьДокумент(КонтекстКомПредложения); ОбъектКомПредложение.СодатьНаОсновании(КонтекстРасчета,ТекЗаказчик,ТекМенеджер); КонецЕсли; Если ПустоеЗначение(КонтекстКомПредложения)=1 Тогда Возврат; КонецЕсли; ОбъектКомПредложение.ПерезаполнитьНаОсновании(КонтекстРасчета,ТекЗаказчик,ТекМенеджер,КоллекцияОбъемов,КоллекцияЦен); КонецЕсли; КонецПроцедуры //====================================================================== Процедура ОткрытьРасчетНаПерепечатку() КонтекстФормы=""; ТекДок=ТекущийДокумент(); ИТЗ=СоздатьОбъект("ИндексированнаяТаблица"); список=СоздатьОбъект("СписокЗначений"); Запрос = СоздатьОбъект("ODBCRecordset"); ТекстЗапроса = " |SELECT РасчетЗаказа.IDDOC [Ссылка $Документ.РасчетЗаказа] | , Журнал.DOCNO Документ_ном | , NullIf(Cast(Left(Журнал.DATE_TIME_IDDOC, 8) AS datetime), '17530101') Документ_дата |FROM $Документ.РасчетЗаказа AS РасчетЗаказа (NOLOCK) | INNER JOIN _1SJOURN AS Журнал (NOLOCK) ON РасчетЗаказа.IDDOC = Журнал.IDDOC |WHERE (Журнал.ISMARK = 0) | AND ($РасчетЗаказа.ДокументВладелец = :ВыбранРасчет~) |ORDER BY Cast(Left(Журнал.DATE_TIME_IDDOC, 8) AS datetime) | , Журнал.DOCNO |"; Запрос.УстановитьТекстовыйПараметр("ВыбранРасчет", ТекДок); ИТЗ = Запрос.ВыполнитьИнструкцию(ТекстЗапроса,ИТЗ); Если ИТЗ.КоличествоСтрок()=0 Тогда Выбор=0; Иначе ИТЗ.ВыбратьСтроки(); Пока ИТЗ.ПолучитьСтроку() = 1 Цикл Представление="№ "+СокрЛП(ИТЗ.Документ_ном)+" "+ИТЗ.Документ_дата; список.ДобавитьЗначение(ИТЗ.НомерСтроки,Представление); КонецЦикла; Представление="Новый расчет"; список.ДобавитьЗначение(0,Представление); Выбор=0; Позиция=1; Если список.ВыбратьЗначение(Выбор,"Сделайте выбор",Позиция,60,1)=0 Тогда Возврат; КонецЕсли; КонецЕсли; Если Выбор=0 Тогда ОткрытьФорму("Документ.РасчетЗаказа",КонтекстФормы,ТекДок); Иначе ОткрытьФорму(ИТЗ.Получить(Выбор,"Ссылка"),КонтекстФормы); КонецЕсли; КонецПроцедуры // //------------------------------------------------------------------------------------------------------------ Процедура ИзменитьЗначенияВБольшойТаблицыРасположенияДизайновНаВалу(НомерСтрокиДокумента,Действие) Далее //------------------------------------------------------------------------------------------------------------ Процедура ИзмТаблицуКонтрагентов(Изменение,ОткудаОткрыли="ТаблицаЗначений") //Добавить - Изменение=1, Удалить - Изменение=2 Редактировать - Изменение=3 Добавить=1; Удалить=2;Редактировать=3; КоличествоСтрок=тбКонтрагенты.КоличествоСтрок(); ТекСтр = тбКонтрагенты.ТекущаяСтрока(); ТекКол=тбКонтрагенты.ТекущаяКолонка(); Если ТекСтр<>ТекСтрокатбКонтрагенты Тогда ТекСтрокатбКонтрагенты= ТекСтр; ОбновитьВидимыеАтрибутыИТаблицы(тбКонтрагенты); КонецЕсли; Если Изменение= Удалить Тогда Если Форма.ТолькоПросмотр()=1 Тогда Возврат; КонецЕсли; Если Проведен()=1 Тогда Предупреждение("Нельзя изменять заказчика в поведенном документе!"); Возврат; КонецЕсли; Если (КоличествоСтрок = 0)ИЛИ(КоличествоСтрок = 1) Тогда СтатусВозврата(0); Возврат; КонецЕсли; ТекЗаказчик=тбКонтрагенты.ПолучитьЗначение(ТекСтр,"Контрагент"); Если ИТСтрокиДокумента.НомерИндекса("инЗаказчик")=0 Тогда ИТСтрокиДокумента.ДобавитьИндекс("инЗаказчик","Заказчик"); КонецЕсли; ИТСтрокиДокумента.УстановитьФильтр(ТекЗаказчик,ТекЗаказчик,"инЗаказчик"); Если ИТСтрокиДокумента.КоличествоСтрок("инЗаказчик")<>0 Тогда ТекстСообщения =" По этому заказчику в расчете есть дизайны. |Они будут удалены. Продолжить?"; Ответ=Вопрос(ТекстСообщения,"ОК+Отмена",60); Если Ответ<>"ОК" Тогда Возврат; КонецЕсли; Для НС=1 По КоличествоСтрок() Цикл ПолучитьСтрокуПоНомеру(НС); Если Заказчик=ТекЗаказчик Тогда УдалитьСтроку(); ИзменитьЗначенияВБольшойТаблицыРасположенияДизайновНаВалу(НС,Удалить); НС=НС-1; КонецЕсли; КонецЦикла; КонецЕсли; тбКонтрагенты.УдалитьСтроку(ТекСтр); ТекСтр=ТекСтр-1; ТекСтрокатбКонтрагенты= ТекСтр; КоличествоСтрок=КоличествоСтрок-1; Если ТекСтр=1 Тогда //удалена первая строка Контрагент1= тбКонтрагенты.ПолучитьЗначение(1,"Контрагент") ; СтарыйТекЗаказчик=Контрагент1; КонецЕсли; ОбновитьВидимыеАтрибутыИТаблицы(тбКонтрагенты); ИначеЕсли Изменение= Добавить Тогда Если Форма.ТолькоПросмотр()=1 Тогда Возврат; КонецЕсли; Если Проведен()=1 Тогда Предупреждение("Нельзя изменять заказчика в поведенном документе!"); Возврат; КонецЕсли; ВыбранКонтрагент=""; Подсказка="Выберите Заказчика"; спрКонтрагенты=СоздатьОбъект("Справочник.Контрагенты"); Если спрКонтрагенты.Выбрать(Подсказка,"ДляВыбора")=0 Тогда Возврат; КонецЕсли; ВыбранКонтрагент=спрКонтрагенты.ТекущийЭлемент(); Если тбКонтрагенты.НайтиЗначение(ВыбранКонтрагент,ТекСтр,"Контрагент")=1 Тогда Предупреждение("Такой заказчик уже есть!"); Возврат; КонецЕсли; СохранитьПредАтрибутыИТаблицы(тбКонтрагенты); тбКонтрагенты.НоваяСтрока(); ТекСтр=тбКонтрагенты.НомерСтроки; тбКонтрагенты.ТекущаяСтрока(ТекСтр); тбКонтрагенты.УстановитьЗначение(ТекСтр,"Контрагент",ВыбранКонтрагент); тбКонтрагенты.УстановитьЗначение(ТекСтр,"Менеджер",Менеджер); ТекСтрокатбКонтрагенты= ТекСтр; СоздатьЭлементыТаблицыКонтрагентов(ВыбранКонтрагент,тбКонтрагенты); Если тбКонтрагенты.КоличествоСтрок()=1 Тогда Контрагент1= тбКонтрагенты.ПолучитьЗначение(ТекСтр,"Контрагент") ; СтарыйТекЗаказчик=Контрагент1; КонецЕсли; ОбновитьВидимыеАтрибутыИТаблицы(тбКонтрагенты); ТекОплата1=ВыбранКонтрагент.Оплата1.Получить(ДатаДок); ТекОплата2=ВыбранКонтрагент.Оплата2.Получить(ДатаДок); ТекОплата3=ВыбранКонтрагент.Оплата3.Получить(ДатаДок); ТекСрокОтсрочки=ВыбранКонтрагент.Глубина.Получить(ДатаДок); Если (ТекОплата1+ТекОплата2+ТекОплата3)=100 Тогда Оплата1=ТекОплата1; Оплата2=ТекОплата2; тбОплаты.УдалитьСтроки(); Если ТекОплата3>0 Тогда тбОплаты.НоваяСтрока(); тбОплаты.Процент=ТекОплата3; тбОплаты.КвоДней=ТекСрокОтсрочки; КонецЕсли; Иначе ПоследнийПодписанныйДоговор=глВернутьПодписанныйДоговор(Фирма,Валюта,ВыбранКонтрагент,Менеджер); Если ПустоеЗначение(ПоследнийПодписанныйДоговор)=0 Тогда ТекОплата1=ПоследнийПодписанныйДоговор.Оплата1; ТекОплата2=ПоследнийПодписанныйДоговор.Оплата2; ТекОплата3=ПоследнийПодписанныйДоговор.Оплата3; ТекСрокОтсрочки=ПоследнийПодписанныйДоговор.СрокОтсрочки; Оплата1=ТекОплата1; Оплата2=ТекОплата2; тбОплаты.УдалитьСтроки(); Если ТекОплата3>0 Тогда тбОплаты.НоваяСтрока(); тбОплаты.Процент=ТекОплата3; тбОплаты.КвоДней=ТекСрокОтсрочки; КонецЕсли; КонецЕсли; КонецЕсли; ИначеЕсли Изменение= Редактировать Тогда Если Форма.ТолькоПросмотр()=1 Тогда Возврат; КонецЕсли; Если ОткудаОткрыли<>"ТаблицаЗначений" Тогда Если Проведен()=1 Тогда Предупреждение("Нельзя изменять заказчика в поведенном документе!"); Возврат; КонецЕсли; ТекСтр=1; ВыбратьСтроки(); Пока ПолучитьСтроку()=1 Цикл Если Заказчик = СтарыйТекЗаказчик Тогда Заказчик = Контрагент1; КонецЕсли; КонецЦикла; ВыбранКонтрагент=Контрагент1; Если КоличествоСтрок=0 Тогда тбКонтрагенты.НоваяСтрока(); СоздатьЭлементыТаблицыКонтрагентов(ВыбранКонтрагент,тбКонтрагенты); КонецЕсли; тбКонтрагенты.ТекущаяСтрока(ТекСтр); ТекСтрокатбКонтрагенты= ТекСтр; тбКонтрагенты.УстановитьЗначение(ТекСтр,"Контрагент",ВыбранКонтрагент); тбКонтрагенты.УстановитьЗначение(ТекСтр,"Менеджер",Менеджер); СохранитьПредАтрибутыИТаблицы(тбКонтрагенты); ТекОплата1=ВыбранКонтрагент.Оплата1.Получить(ДатаДок); ТекОплата2=ВыбранКонтрагент.Оплата2.Получить(ДатаДок); ТекОплата3=ВыбранКонтрагент.Оплата3.Получить(ДатаДок); ТекСрокОтсрочки=ВыбранКонтрагент.Глубина.Получить(ДатаДок); Если (ТекОплата1+ТекОплата2+ТекОплата3)=100 Тогда Оплата1=ТекОплата1; Оплата2=ТекОплата2; тбОплаты.УдалитьСтроки(); Если ТекОплата3>0 Тогда тбОплаты.НоваяСтрока(); тбОплаты.Процент=ТекОплата3; тбОплаты.КвоДней=ТекСрокОтсрочки; КонецЕсли; Иначе ПоследнийПодписанныйДоговор=глВернутьПодписанныйДоговор(Фирма,Валюта,ВыбранКонтрагент,Менеджер); Если ПустоеЗначение(ПоследнийПодписанныйДоговор)=0 Тогда ТекОплата1=ПоследнийПодписанныйДоговор.Оплата1; ТекОплата2=ПоследнийПодписанныйДоговор.Оплата2; ТекОплата3=ПоследнийПодписанныйДоговор.Оплата3; ТекСрокОтсрочки=ПоследнийПодписанныйДоговор.СрокОтсрочки; КонецЕсли; Оплата1=ТекОплата1; Оплата2=ТекОплата2; тбОплаты.УдалитьСтроки(); Если ТекОплата3>0 Тогда тбОплаты.НоваяСтрока(); тбОплаты.Процент=ТекОплата3; тбОплаты.КвоДней=ТекСрокОтсрочки; КонецЕсли; КонецЕсли; Иначе Если КоличествоСтрок=0 Тогда СтатусВозврата(0); Возврат; КонецЕсли; ТекЗаказчик=тбКонтрагенты.ПолучитьЗначение(ТекСтр,"Контрагент"); Если ТекКол="Контрагент" Тогда Если Проведен()=1 Тогда Предупреждение("Нельзя изменять заказчика в поведенном документе!"); Возврат; КонецЕсли; Подсказка="Выберите Заказчика"; спрКонтрагенты=СоздатьОбъект("Справочник.Контрагенты"); Если ПустоеЗначение(ТекЗаказчик)<>1 Тогда спрКонтрагенты.НайтиЭлемент(ТекЗаказчик); КонецЕсли; Если спрКонтрагенты.Выбрать(Подсказка,"ДляВыбора")=0 Тогда Возврат; КонецЕсли; ВыбранКонтрагент=спрКонтрагенты.ТекущийЭлемент(); Для ы=1 По тбКонтрагенты.КоличествоСтрок() Цикл Если ТекСтр=ы Тогда Продолжить; КонецЕсли; Если ВыбранКонтрагент=тбКонтрагенты.ПолучитьЗначение(ы,"Контрагент") Тогда Предупреждение("Такой заказчик уже есть!"); Возврат; КонецЕсли; КонецЦикла; ВыбратьСтроки(); Пока ПолучитьСтроку()=1 Цикл Если Заказчик = СтарыйТекЗаказчик Тогда Заказчик = ВыбранКонтрагент; КонецЕсли; КонецЦикла; ТекСтрокатбКонтрагенты= ТекСтр; тбКонтрагенты.УстановитьЗначение(ТекСтр,"Контрагент",ВыбранКонтрагент); СохранитьПредАтрибутыИТаблицы(тбКонтрагенты); ПоследнийПодписанныйДоговор=глВернутьПодписанныйДоговор(Фирма,Валюта,ВыбранКонтрагент,Менеджер); Если ПустоеЗначение(ПоследнийПодписанныйДоговор)=0 Тогда ТекОплата1=ПоследнийПодписанныйДоговор.Оплата1; ТекОплата2=ПоследнийПодписанныйДоговор.Оплата2; ТекОплата3=ПоследнийПодписанныйДоговор.Оплата3; ТекСрокОтсрочки=ПоследнийПодписанныйДоговор.СрокОтсрочки; Оплата1=ТекОплата1; Оплата2=ТекОплата2; Если ТекОплата3>0 Тогда тбОплаты.УдалитьСтроки(); тбОплаты.НоваяСтрока(); тбОплаты.Процент=ТекОплата3; тбОплаты.КвоДней=ТекСрокОтсрочки; КонецЕсли; КонецЕсли; ИначеЕсли ТекКол="Менеджер" Тогда //Если Проведен()=1 Тогда // Предупреждение("Нельзя изменять заказчика в поведенном документе!"); // Возврат; //КонецЕсли; Подсказка="Выберите Менеджера"; ТекМенеджер=тбКонтрагенты.ПолучитьЗначение(ТекСтр,"Менеджер"); спрСотрудники=СоздатьОбъект("Справочник.Сотрудники"); Если ПустоеЗначение(ТекЗаказчик)<>1 Тогда спрСотрудники.НайтиЭлемент(ТекМенеджер); КонецЕсли; Если спрСотрудники.Выбрать(Подсказка,"ДляВыбора")=0 Тогда Возврат; КонецЕсли; ВыбранСотрудник=спрСотрудники.ТекущийЭлемент(); ТекСтрокатбКонтрагенты= ТекСтр; тбКонтрагенты.УстановитьЗначение(ТекСтр,"Менеджер",ВыбранСотрудник); Если ТекСтр=1 Тогда Менеджер=ВыбранСотрудник; КонецЕсли; СохранитьПредАтрибутыИТаблицы(тбКонтрагенты); //ИначеЕсли ТекКол="Договор" Тогда // ОткрытьДоговор(); //ИначеЕсли ТекКол="Спецификация" Тогда // ОткрытьСпецификацию(); КонецЕсли; КонецЕсли; КонецЕсли; ИзмКоличествоКонтрагентов(); КонецПроцедуры //------------------------------------------------------------------------------------------------------------ Процедура ИзмГлавныйМенеджер() тбКонтрагенты.УстановитьЗначение(1,"Менеджер",Менеджер); Для НС=2 По тбКонтрагенты.КоличествоСтрок() Цикл Если ПустоеЗначение(тбКонтрагенты.ПолучитьЗначение(НС,"Менеджер"))=1 Тогда тбКонтрагенты.УстановитьЗначение(НС,"Менеджер",Менеджер); КонецЕсли; КонецЦикла; КонецПроцедуры //------------------------------------------------------------------------------------------------------------ Функция РасчитатьРентабельностьЗаказа(ТаблицаРасчетнаяМасса,УстановленныйОбъемТекЗаказчика,УстановленнаяЦенаЗаказа) Далее //----------------------------------------------------------------------------------------------------------------------------------------------------------------------- Функция ВернутьТекстЗаказчик(Страница="Менеджер") тЗаказчик=""; Если тбКонтрагенты.КоличествоСтрок()<=1 Тогда тЗаказчик="Заказчик:"; ИначеЕсли Страница<>"Менеджер" Тогда тЗаказчик="Заказчики:"; КонецЕсли; Возврат тЗаказчик; КонецФункции //====================================================================== Функция ВернутьТекущийКонтрагент() Если (тбКонтрагенты.КоличествоСтрок()>1)и(ПустоеЗначение(ПДКонтрагентыПодчДоки)=0) Тогда Данные=ПДКонтрагентыПодчДоки.Данные; ТекСтр=Данные.ТекущаяСтрока; Если ПустоеЗначение(ТекСтр)=0 Тогда ИТ=Данные.ИндексированнаяТаблица; Возврат ""+ИТ.Получить(ТекСтр,"Контрагент"); КонецЕсли; КонецЕсли; Возврат ""; КонецФункции //====================================================================== Функция ВернутьТекст(ЧтоВернуть) Если (тбКонтрагенты.КоличествоСтрок()=1) Тогда Если ЧтоВернуть="тЗаказчик" Тогда Возврат "Заказчик:"; ИначеЕсли ЧтоВернуть="тМенеджер" Тогда Возврат "Менеджер:"; ИначеЕсли ЧтоВернуть="Заказчик" Тогда Возврат тбКонтрагенты.ПолучитьЗначение(1,"Контрагент"); ИначеЕсли ЧтоВернуть="Менеджер" Тогда Возврат тбКонтрагенты.ПолучитьЗначение(1,"Менеджер"); КонецЕсли; Иначе Возврат ""; КонецЕсли; КонецФункции // //----------------------------------------------------------------------------------------------------------------------------------------------------------------------- Функция ВернутьЗаказчиковСтрокой() тЗаказчики=""; тбКонтрагенты.ВыбратьСтроки(); Пока тбКонтрагенты.ПолучитьСтроку() = 1 Цикл тЗаказчики=тЗаказчики+СокрЛП(тбКонтрагенты.Контрагент)+РазделительСтрок; КонецЦикла; Возврат тЗаказчики; КонецФункции //----------------------------------------------------------------------------------------------------------------------------------------------------------------------- Функция ВернутьВидОтображенияКрасок() Если фЗапечаткаТекущДизайна=1 Тогда ВидОтображенияКрасок="Отображена общая таблица красок всего заказа." ИначеЕсли фЗапечаткаТекущДизайна=2 Тогда ВидОтображенияКрасок="Отображена таблица красок дизайна,выделенного курсором в талице Готовая Продукция." Иначе ВидОтображенияКрасок=""; КонецЕсли; Возврат ВидОтображенияКрасок; КонецФункции //----------------------------------------------------------------------------------------------------------------------------------------------------------------------- Функция УстДоступность() УстТекущиеСтрокиТаблиц(); НаборПрав=НазваниеНабораПрав(); Если (Форма.ТолькоПросмотр()=1) Тогда Форма.кОК.Доступность(0); Форма.кнПодписьСогласованиеЦены.Доступность(0); Форма.кнОтказВСогласованииЦены.Доступность(0); Форма.кПровести.Доступность(0); ИначеЕсли (ИмяПользователя()="zk96") Тогда //Форма.кОК.Доступность(1); Форма.кнПодписьСогласованиеЦены.Доступность(1); Форма.кнОтказВСогласованииЦены.Доступность(1); Форма.кПровести.Доступность(1); ИначеЕсли Проведен()=1 Тогда Форма.кнПодписьСогласованиеЦены.Доступность(0); Форма.кнОтказВСогласованииЦены.Доступность(0); // Форма.кОК.Доступность(0); Форма.кПровести.Доступность(0); //Форма.кЗаписать.Доступность(0); ИначеЕсли(НаборПрав="ГлавныйЭкономист")ИЛИ(НаборПрав="Администратор")ИЛИ(НаборПрав="Руководитель") Тогда // Форма.кОК.Доступность(1); Форма.кПровести.Доступность(1); Форма.кнПодписьСогласованиеЦены.Доступность(1); Форма.кнОтказВСогласованииЦены.Доступность(1); ИначеЕсли(НаборПрав="Технолог")ИЛИ (НаборПрав="ТехнологНикатор")ИЛИ(НаборПрав="Ламинаторщик") Тогда // Форма.кОК.Доступность(1); Форма.кПровести.Доступность(0); Форма.кнПодписьСогласованиеЦены.Доступность(0); Форма.кнОтказВСогласованииЦены.Доступность(0); ИначеЕсли(НаборПрав="Менеджер") Тогда // Форма.кОК.Доступность(1); Форма.кПровести.Доступность(0); Если (фПодписьСогласованиеЦены<>0)и(ИзмСогласованиеЦены>2) Тогда Форма.кнПодписьСогласованиеЦены.Доступность(0); Форма.кнОтказВСогласованииЦены.Доступность(0); Иначе Форма.кнПодписьСогласованиеЦены.Доступность(1); Форма.кнОтказВСогласованииЦены.Доступность(1); КонецЕсли; Иначе //Форма.кОК.Доступность(0); Форма.кПровести.Доступность(0); Форма.кнПодписьСогласованиеЦены.Доступность(0); Форма.кнОтказВСогласованииЦены.Доступность(0); КонецЕсли; Если (Проведен()=1)или(фПодписьСогласованиеЦены=1) Тогда ЗакрытьДоступ=1; Иначе ЗакрытьДоступ=0; КонецЕсли; Если Проведен()=1 Тогда Форма.СписокФирм.Доступность(0); Форма.спНашиФирмы.Доступность(0); Форма.спВидыПленки.Доступность(0); ИначеЕсли (фПодписьМенеджера+фПодписьТехнолога+фПодписьЭкономиста+фПодписьСогласованиеЦены)>0 Тогда Форма.СписокФирм.Доступность(0); Форма.спНашиФирмы.Доступность(0); Форма.спВидыПленки.Доступность(0); Иначе Форма.СписокФирм.Доступность(1); Форма.спНашиФирмы.Доступность(1); Форма.спВидыПленки.Доступность(1); КонецЕсли; Форма.КвоДорожекНаВалуКопия2.Доступность(0); //Форма.Клей2.Доступность(0); Если Проведен()=1 Тогда Форма.кнПодписьЛаминаторщика.Доступность(0); Форма.кнОтказЛаминаторщика.Доступность(0); Форма.спШиринаВала2.Доступность(0); Форма.МинШиринаСырьяОснМатериала.Доступность(0); Форма.МинШиринаСырьяМатериалаЛаминации1.Доступность(0); Форма.МинШиринаСырьяМатериалаЛаминации2.Доступность(0); //Форма.Клей2.Доступность(0); ИначеЕсли фПодписьСогласованиеЦены=1 Тогда Форма.кнПодписьЛаминаторщика.Доступность(0); Форма.кнОтказЛаминаторщика.Доступность(0); Форма.спШиринаВала2.Доступность(0); Форма.МинШиринаСырьяОснМатериала.Доступность(0); Форма.МинШиринаСырьяМатериалаЛаминации1.Доступность(0); Форма.МинШиринаСырьяМатериалаЛаминации2.Доступность(0); //Форма.Клей2.Доступность(0); ИначеЕсли фПодписьЭкономиста=1 Тогда Форма.кнПодписьЛаминаторщика.Доступность(0); Форма.кнОтказЛаминаторщика.Доступность(0); Форма.спШиринаВала2.Доступность(0); Форма.МинШиринаСырьяОснМатериала.Доступность(0); Форма.МинШиринаСырьяМатериалаЛаминации1.Доступность(0); Форма.МинШиринаСырьяМатериалаЛаминации2.Доступность(0); //Форма.Клей2.Доступность(0); ИначеЕсли (НаборПрав="Ламинаторщик") ИЛИ (ИмяПользователя()="zk96")ИЛИ (ИмяПользователя()="Вакиль") Тогда Форма.кнПодписьЛаминаторщика.Доступность(1); Форма.кнОтказЛаминаторщика.Доступность(1); Форма.спШиринаВала2.Доступность(1); Форма.МинШиринаСырьяОснМатериала.Доступность(1); Форма.МинШиринаСырьяМатериалаЛаминации1.Доступность(1); Форма.МинШиринаСырьяМатериалаЛаминации2.Доступность(1); Иначе Форма.кнПодписьЛаминаторщика.Доступность(0); Форма.кнОтказЛаминаторщика.Доступность(0); Форма.спШиринаВала2.Доступность(0); Форма.МинШиринаСырьяОснМатериала.Доступность(0); Форма.МинШиринаСырьяМатериалаЛаминации1.Доступность(0); Форма.МинШиринаСырьяМатериалаЛаминации2.Доступность(0); КонецЕсли; ДоступностьКнопки=0; НеоткрытЗаказ=0; Для НС=1 По тбКонтрагенты.КоличествоСтрок() Цикл ТекЗаказ=тбКонтрагенты.ПолучитьЗначение(НС,"ЗаказВакиля"); Если ПустоеЗначение(ТекЗаказ)=1 Тогда НеоткрытЗаказ=1; Прервать; КонецЕсли; КонецЦикла; Если (фПечать=1)И(НеоткрытЗаказ=0) Тогда ИТСтрокиДокумента.ВыбратьСтроки(); Пока ИТСтрокиДокумента.ПолучитьСтроку()=1 Цикл Если(ИТСтрокиДокумента.СостояниеДизайна=Перечисление.СостояниеДизайна.Повтор)ИЛИ(ИТСтрокиДокумента.СостояниеДизайна=Перечисление.СостояниеДизайна.ПовторСНовымиФормами) Тогда Продолжить; Иначе ДоступностьКнопки=1; Прервать; КонецЕсли; КонецЦикла; Форма.кнТехЗадание.Доступность(ДоступностьКнопки); Иначе Форма.кнТехЗадание.Доступность(ДоступностьКнопки); КонецЕсли; Если фПечать=1 Тогда тПечатныйСлой="Печатный слой"; тЛаминация1="Слой 1-ой ламинации"; тЛаминация2="Слой 2-ой ламинации"; Иначе тПечатныйСлой="Основной слой"; тЛаминация1="Слой 1-ой ламинации"; тЛаминация2="Слой 2-ой ламинации"; КонецЕсли; Если фФлексоформа=1 Тогда КонецЕсли; Если фЭкструзия=1 Тогда Иначе //без СЭкструзией КонецЕсли; Если (фПодписьТехнолога=1)И(фПодписьМенеджера=1) И(РасчетСделан=1)Тогда Форма.кПечать.Доступность(1); Иначе Форма.кПечать.Доступность(0); КонецЕсли; //Если фПодобралиРазвертки=0 Тогда // Форма.тРазвертка.Заголовок("Развертку не подобрали"); // Форма.тРазвертка.Цвет(255,0,0); //Иначе // Форма.тРазвертка.Заголовок("Развертка подобрана"); // Форма.тРазвертка.Цвет(-1); //КонецЕсли; //Если (фПодписьТехнолога=1)и(РасчетСделан=1) Тогда // Форма.фЦеныПродукцииВкг.Доступность(1); // Если (фПакетоделание=1)ИЛИ(фБабинорезка=1) Тогда // Форма.фЦеныПродукцииВшт.Доступность(1); // Иначе // Форма.фЦеныПродукцииВшт.Доступность(0); // КонецЕсли; //Иначе // Форма.фЦеныПродукцииВкг.Доступность(0); // Форма.фЦеныПродукцииВшт.Доступность(0); //КонецЕсли; Если Безнал=0 Тогда Форма.кнДоговор.Доступность(0); Иначе Форма.кнДоговор.Доступность(1); КонецЕсли; Если Безнал=0 Тогда Форма.кнСпецификация.Доступность(0); Иначе Форма.кнСпецификация.Доступность(1); КонецЕсли; Если (ПустоеЗначение(ДокументВладелец)=1)и(фПодписьСогласованиеЦены=1)и(Проведен()=1) Тогда Форма.кПерепечатка.Доступность(1); Иначе Форма.кПерепечатка.Доступность(0); КонецЕсли; Если (КакаяЗакладка="Технологический")Тогда Если РасчетСделан=1 Тогда Форма.кРасчетТехнологом.Видимость(1); Форма.картинаПодписьТехнолога.Видимость(1); Форма.кнПодписьТехнолога.Видимость(1); Форма.кнПодписьТехнолога.Доступность(1); Форма.кнОтказТехнолога.Видимость(1); Форма.кнОтказТехнолога.Видимость(1); Форма.тЗаполнилТехнолог.Видимость(1); Форма.тПодписьТехнолога.Видимость(1); Иначе Форма.кРасчетТехнологом.Видимость(1); Форма.картинаПодписьТехнолога.Видимость(1); Форма.кнПодписьТехнолога.Видимость(1); Форма.кнПодписьТехнолога.Доступность(0); Форма.кнОтказТехнолога.Видимость(1); Форма.кнОтказТехнолога.Видимость(1); Форма.тЗаполнилТехнолог.Видимость(1); Форма.тПодписьТехнолога.Видимость(1); КонецЕсли; Иначе Форма.кРасчетТехнологом.Видимость(0); Форма.картинаПодписьТехнолога.Видимость(0); Форма.кнПодписьТехнолога.Видимость(0); Форма.кнПодписьТехнолога.Доступность(0); Форма.кнОтказТехнолога.Видимость(0); Форма.кнОтказТехнолога.Видимость(0); Форма.тЗаполнилТехнолог.Видимость(0); Форма.тПодписьТехнолога.Видимость(0); КонецЕсли; Если (КакаяЗакладка="СопровождающиеДокументы") и (тбКонтрагенты.КоличествоСтрок()>1) Тогда Форма.ТПКонтрагентыПодчДоки_.Видимость(1); Форма.тТекущийЗаказчик.Видимость(1); Иначе Форма.ТПКонтрагентыПодчДоки_.Видимость(0); Форма.тТекущийЗаказчик.Видимость(0); КонецЕсли; //Если ПустоеЗначение(РасширениеФормы)=0 Тогда // РасширениеФормы.ПолучитьАтрибут("кДопЗптратыПриРазбивке").; //КонецЕсли; Если (КакаяЗакладка="ПродажныеДанные")Тогда Форма.СписокРасчитанныхОбъемов.Доступность(1); Если (тбКонтрагенты.КоличествоСтрок()>1) Тогда Форма.рамкаПродажныеДанные.Видимость(1); Форма.тСтоимостьФорм.Видимость(0); Форма.тПродажЦенаБезФорм.Видимость(0); Форма.тПродажЦенаСФормами.Видимость(0); Форма.ПродажнаяСтоимостьФорм.Видимость(0); Форма.УстановленнаяЦенаБезФорм.Видимость(0); Форма.УстановленнаяЦена.Видимость(0); Форма.фФормыПродаютсяОтдельно.Видимость(0); Форма.фФормыПродаютсяОтдельно.Доступность(0); Форма.ПродажнаяСтоимостьФорм.Доступность(0); Форма.УстановленнаяЦенаБезФорм.Доступность(0); Форма.УстановленнаяЦена.Доступность(0); Форма.УстановленнаяЦенаПоДокументам.Доступность(0); Форма.Откат.Доступность(0); Форма.рамкаПродажныеДанныеПоДокументам.Видимость(0); Форма.тОткат.Видимость(0); Форма.Откат.Видимость(0); Форма.тПродажЦенаСФормамиПоДокументам.Видимость(0); Форма.УстановленнаяЦенаПоДокументам.Видимость(0); Форма.тНестандартОбъем.Видимость(0); Форма.НестандартОбъем.Видимость(0); Форма.НестандартОбъем.Доступность(0); Форма.ТППродажа_.Видимость(1); Форма.кПродажныеЦены.Видимость(1); Форма.кСтоимостьФорм.Видимость(1); форма.кБонус.Видимость(1); Если ИмяПользователя()="zk96" Тогда форма.кВсеКолонки.Видимость(1); Иначе форма.кВсеКолонки.Видимость(0); КонецЕсли; Иначе Форма.рамкаПродажныеДанные.Видимость(1); Форма.тСтоимостьФорм.Видимость(1); Форма.тПродажЦенаБезФорм.Видимость(1); Форма.тПродажЦенаСФормами.Видимость(1); Форма.ПродажнаяСтоимостьФорм.Видимость(1); Форма.УстановленнаяЦенаБезФорм.Видимость(1); Форма.УстановленнаяЦена.Видимость(1); Форма.фФормыПродаютсяОтдельно.Видимость(1); Форма.фФормыПродаютсяОтдельно.Доступность(1); Форма.ПродажнаяСтоимостьФорм.Доступность(1); Форма.УстановленнаяЦенаБезФорм.Доступность(1); Форма.УстановленнаяЦена.Доступность(1); Форма.УстановленнаяЦенаПоДокументам.Доступность(1); Форма.Откат.Доступность(1); Форма.рамкаПродажныеДанныеПоДокументам.Видимость(1); Форма.тОткат.Видимость(1); Форма.Откат.Видимость(1); Форма.тПродажЦенаСФормамиПоДокументам.Видимость(1); Форма.УстановленнаяЦенаПоДокументам.Видимость(1); Если НестандартныеЧислаВДокументах=1 Тогда Форма.тНестандартОбъем.Видимость(1); Форма.НестандартОбъем.Видимость(1); Форма.НестандартОбъем.Доступность(1); Иначе Форма.тНестандартОбъем.Видимость(0); Форма.НестандартОбъем.Видимость(0); Форма.НестандартОбъем.Доступность(0); КонецЕсли; Форма.ТППродажа_.Видимость(0); Форма.кПродажныеЦены.Видимость(0); Форма.кСтоимостьФорм.Видимость(0); форма.кБонус.Видимость(0); форма.кВсеКолонки.Видимость(0); КонецЕсли; Иначе Форма.рамкаПродажныеДанные.Видимость(0); Форма.тСтоимостьФорм.Видимость(0); Форма.тПродажЦенаБезФорм.Видимость(0); Форма.тПродажЦенаСФормами.Видимость(0); Форма.ПродажнаяСтоимостьФорм.Видимость(0); Форма.УстановленнаяЦенаБезФорм.Видимость(0); Форма.УстановленнаяЦена.Видимость(0); Форма.фФормыПродаютсяОтдельно.Видимость(0); Форма.фФормыПродаютсяОтдельно.Доступность(0); Форма.СписокРасчитанныхОбъемов.Доступность(0); Форма.ПродажнаяСтоимостьФорм.Доступность(0); Форма.УстановленнаяЦенаБезФорм.Доступность(0); Форма.УстановленнаяЦена.Доступность(0); Форма.УстановленнаяЦенаПоДокументам.Доступность(0); Форма.Откат.Доступность(0); Форма.рамкаПродажныеДанныеПоДокументам.Видимость(0); Форма.тОткат.Видимость(0); Форма.Откат.Видимость(0); Форма.тПродажЦенаСФормамиПоДокументам.Видимость(0); Форма.УстановленнаяЦенаПоДокументам.Видимость(0); Форма.тНестандартОбъем.Видимость(0); Форма.НестандартОбъем.Видимость(0); Форма.НестандартОбъем.Доступность(0); Форма.ТППродажа_.Видимость(0); Форма.кПродажныеЦены.Видимость(0); Форма.кСтоимостьФорм.Видимость(0); форма.кБонус.Видимость(0); форма.кВсеКолонки.Видимость(0); КонецЕсли; Если КакаяЗакладка="Менеджерский" Тогда Если тбКонтрагенты.КоличествоСтрок()>1 Тогда Форма.Контрагент1.Видимость(0); //Форма.кнДоговор.Видимость(0); //Форма.кнСпецификация.Видимость(0); Форма.тбКонтрагенты.Видимость(1); Форма.кнДобавитьКонтрагент.Видимость(1); Форма.кнУдалитьКонтрагент.Видимость(1); Иначе Форма.Контрагент1.Видимость(1); //Форма.кнДоговор.Видимость(1); //Форма.кнСпецификация.Видимость(1); Форма.тбКонтрагенты.Видимость(0); Форма.кнДобавитьКонтрагент.Видимость(1); Форма.кнУдалитьКонтрагент.Видимость(0); //Если Безнал=0 Тогда // Форма.кнДоговор.Доступность(0); //Иначе // Форма.кнДоговор.Доступность(1); //КонецЕсли; // //Если Безнал=0 Тогда // Форма.кнСпецификация.Доступность(0); //Иначе // Форма.кнСпецификация.Доступность(1); //КонецЕсли; КонецЕсли; КонецЕсли; Если (ЗакрытьДоступ=1) Тогда Форма.НомерДок.Доступность(0); Форма.ДатаДок.Доступность(0); Форма.спВидыПленки.Доступность(0); Форма.Менеджер.Доступность(0); Форма.кОчиститьМенеджер.Доступность(0); Форма.фЭкструзия.Доступность(0); Форма.фПечать.Доступность(0); Форма.фЛаминация.Доступность(0); Форма.фБабинорезка.Доступность(0); Форма.фПакетоделание.Доступность(0); Форма.фЕстьКлипсы.Доступность(0); Форма.фЕстьРасфасовка.Доступность(0); Форма.фФлексоформа.Доступность(0); Форма.ОсновнойМатериал.Доступность(0); Форма.спТипПоставкиПечать.Доступность(0); Форма.кЧастПоставкаОснМатериал.Доступность(0); Форма.ТолщинаОсновногоМатериала.Доступность(0); Форма.кОчиститьОсновнойМатериал.Доступность(0); Форма.МатериалЛаминации1.Доступность(0); Форма.спТипПоставкиЛаминат1.Доступность(0); Форма.ТолщинаМатериалаЛаминации1.Доступность(0); Форма.кОчиститьМатериалДляЛаминации1.Доступность(0); Форма.МатериалЛаминации2.Доступность(0); Форма.спТипПоставкиЛаминат2.Доступность(0); Форма.ТолщинаМатериалаЛаминации2.Доступность(0); Форма.кОчиститьМатериалДляЛаминации2.Доступность(0); Форма.кЧастПоставкаОснМатериал.Доступность(0); Форма.кЧастПоставкаМатериалЛаминации1.Доступность(0); Форма.кЧастПоставкаМатериалЛаминации2.Доступность(0); Форма.фПереклейка.Доступность(0); Форма.спДоставка.Доступность(0); Форма.ВыборДоставки.Доступность(0); Форма.Оплата1.Доступность(0); Форма.Оплата2.Доступность(0); Форма.кнОплатыДобавить.Доступность(0); Форма.кнОплатыУдалить.Доступность(0); //Форма.Безнал.Доступность(0); //Форма.Нал.Доступность(0); Форма.НаличиеМакета.Доступность(0); Форма.процентCMYK.Доступность(0); Форма.процентPantone.Доступность(0); Форма.спШиринаРезиновогоВала.Доступность(0); Форма.Клей.Доступность(0); Форма.спПечатныеМашины.Доступность(0); Форма.кКопироватьКраски.Доступность(0); Форма.кнЗаполнитьКраскиИзДизайнов.Доступность(0); Форма.фПодписьМенеджера.Доступность(0); Форма.кнПодписьТехнолога.Доступность(0); Форма.кнОтказТехнолога.Доступность(0); Форма.кнПодписьЭкономиста.Доступность(0); Форма.кнОтказЭкономиста.Доступность(0); Форма.Формат1.Доступность(0); Форма.ШиринаСырьяОсновногоМатериала.Доступность(0); Форма.Формат2.Доступность(0); Форма.ШиринаСырьяМатериалаЛаминации1.Доступность(0); Форма.МатериалЛаминации2.Доступность(0); Форма.Формат3.Доступность(0); Форма.ШиринаСырьяМатериалаЛаминации2.Доступность(0); Форма.фРучнойВводШириныРисунка.Доступность(0); Форма.ДатаДляЭкономистов.Доступность(0); Форма.кРасчет.Доступность(0); Форма.СписокРасчитанныхОбъемов.Доступность(0); Форма.фФормыПродаютсяОтдельно.Доступность(0); Форма.ПродажнаяСтоимостьФорм.Доступность(0); Форма.УстановленнаяЦенаБезФорм.Доступность(0); Форма.УстановленнаяЦена.Доступность(0); Форма.УстановленнаяЦенаПоДокументам.Доступность(0); Форма.Откат.Доступность(0); Форма.НестандартОбъем.Доступность(0); Форма.КвоДорожекНаВалу.Доступность(0); //Форма.кРасположениеРисунковНаВалу.Доступность(0); Форма.КвоДорожекНаВалуКопия.Доступность(0); //Форма.кРасположениеРисунковНаВалуКопия.Доступность(0); Если ПустоеЗначение(ПДИТМенеджер)=0 Тогда Данные = ПДИТМенеджер.Данные; Данные.ИзменятьСоставСтрок=0; КонецЕсли; Если ПустоеЗначение(ПДИнТбТехнолог)=0 Тогда Данные = ПДИнТбТехнолог.Данные; Данные.ИзменятьСоставСтрок=0; КонецЕсли; Иначе Если (фЭкструзия=0) И (фПечать=0)И (фЛаминация=0) И (фБабинорезка=0)И(фПакетоделание=0) Тогда Форма.ОсновнойМатериал.Доступность(0); Форма.спТипПоставкиПечать.Доступность(0); Форма.кЧастПоставкаОснМатериал.Доступность(0); Форма.Формат1.Доступность(0); Форма.ШиринаСырьяОсновногоМатериала.Доступность(0); Форма.ТолщинаОсновногоМатериала.Доступность(0); Иначе Форма.ОсновнойМатериал.Доступность(1); Форма.спТипПоставкиПечать.Доступность(1); Если спТипПоставкиПечать.ТекущаяСтрока()<>0 Тогда Если спТипПоставкиПечать.ПолучитьЗначение(спТипПоставкиПечать.ТекущаяСтрока())=2 Тогда Форма.кЧастПоставкаОснМатериал.Доступность(1); Иначе Форма.кЧастПоставкаОснМатериал.Доступность(0); КонецЕсли; КонецЕсли; Форма.Формат1.Доступность(1); Форма.ШиринаСырьяОсновногоМатериала.Доступность(1); Форма.ТолщинаОсновногоМатериала.Доступность(1); КонецЕсли; Если Проведен()=1 Тогда Форма.фПодписьМенеджера.Доступность(0); ИначеЕсли фПодписьСогласованиеЦены=1 Тогда Форма.фПодписьМенеджера.Доступность(0); Иначе Форма.фПодписьМенеджера.Доступность(1); КонецЕсли; Если (НаборПрав="Администратор")Тогда ЗакрытьДоступСтраницаМенеджер=0; ИначеЕсли (НаборПрав="ГлавныйЭкономист") Тогда ЗакрытьДоступСтраницаМенеджер=0; ИначеЕсли (фПодписьМенеджера=1) Тогда ЗакрытьДоступСтраницаМенеджер=1; Иначе ЗакрытьДоступСтраницаМенеджер=0; КонецЕсли; Если (НаборПрав="Администратор")Тогда ЗакрытьДоступКТехнологичПолям=0; ИначеЕсли (НаборПрав="ГлавныйЭкономист") Тогда ЗакрытьДоступКТехнологичПолям=0; ИначеЕсли (фПодписьТехнолога=1) Тогда ЗакрытьДоступКТехнологичПолям=1; Иначе ЗакрытьДоступКТехнологичПолям=0; КонецЕсли; Если (НаборПрав="Администратор")Тогда ЗакрытьДоступКЭкономистПолям=0; ИначеЕсли (НаборПрав="ГлавныйЭкономист") Тогда ЗакрытьДоступКЭкономистПолям=0; ИначеЕсли (фПодписьЭкономиста=1) Тогда ЗакрытьДоступКЭкономистПолям=1; Иначе ЗакрытьДоступКЭкономистПолям=0; КонецЕсли; Если (ЗакрытьДоступСтраницаМенеджер=1) Тогда Форма.НомерДок.Доступность(0); Форма.ДатаДок.Доступность(0); Форма.спВидыПленки.Доступность(0); Форма.Менеджер.Доступность(0); Форма.кОчиститьМенеджер.Доступность(0); Форма.Контрагент1.Доступность(0); Форма.кнДобавитьКонтрагент.Доступность(0); Форма.кнУдалитьКонтрагент.Доступность(0); Форма.фЭкструзия.Доступность(0); Форма.фПечать.Доступность(0); Форма.фЛаминация.Доступность(0); Форма.фБабинорезка.Доступность(0); Форма.фПакетоделание.Доступность(0); Форма.фЕстьКлипсы.Доступность(0); Форма.фЕстьРасфасовка.Доступность(0); Форма.фФлексоформа.Доступность(0); Форма.ОсновнойМатериал.Доступность(0); Форма.спТипПоставкиПечать.Доступность(0); Форма.ТолщинаОсновногоМатериала.Доступность(0); Форма.кОчиститьОсновнойМатериал.Доступность(0); Форма.Формат1.Доступность(0); Форма.МатериалЛаминации1.Доступность(0); Форма.спТипПоставкиЛаминат1.Доступность(0); Форма.ТолщинаМатериалаЛаминации1.Доступность(0); Форма.кОчиститьМатериалДляЛаминации1.Доступность(0); Форма.Формат2.Доступность(0); Форма.МатериалЛаминации2.Доступность(0); Форма.спТипПоставкиЛаминат2.Доступность(0); Форма.ТолщинаМатериалаЛаминации2.Доступность(0); Форма.кОчиститьМатериалДляЛаминации2.Доступность(0); Форма.Формат3.Доступность(0); Форма.кЧастПоставкаОснМатериал.Доступность(1); Форма.кЧастПоставкаМатериалЛаминации1.Доступность(0); Форма.кЧастПоставкаМатериалЛаминации2.Доступность(0); Форма.НаличиеМакета.Доступность(0); Форма.процентCMYK.Доступность(0); Форма.процентPantone.Доступность(0); Форма.КвоДорожекНаВалу.Доступность(0); //Форма.кРасположениеРисунковНаВалу.Доступность(0); Если ПустоеЗначение(ПДИТМенеджер)=0 Тогда Данные = ПДИТМенеджер.Данные; Данные.ИзменятьСоставСтрок=0; КонецЕсли; Иначе Форма.НомерДок.Доступность(1); Форма.ДатаДок.Доступность(1); Форма.спВидыПленки.Доступность(1); Форма.Менеджер.Доступность(1); Форма.кОчиститьМенеджер.Доступность(1); Если НашаФирма=КоллекцияНашихФирм.ОЗУМ Тогда Если фЭкструзия=1 Тогда фЭкструзия=0; КонецЕсли; Форма.фЭкструзия.Доступность(0); Иначе Форма.фЭкструзия.Доступность(1); КонецЕсли; Форма.фПечать.Доступность(1); Форма.фЛаминация.Доступность(1); Форма.фБабинорезка.Доступность(1); Форма.фПакетоделание.Доступность(1); Если фПакетоделание=1 Тогда Форма.фЕстьКлипсы.Доступность(1); Форма.фЕстьРасфасовка.Доступность(1); Иначе Форма.фЕстьКлипсы.Доступность(0); Форма.фЕстьРасфасовка.Доступность(0); КонецЕсли; Форма.фФлексоформа.Доступность(1); Если фЛаминация=1 Тогда Форма.МатериалЛаминации1.Доступность(1); Форма.МатериалЛаминации2.Доступность(1); Иначе Форма.МатериалЛаминации1.Доступность(0); Форма.МатериалЛаминации2.Доступность(0); КонецЕсли; Форма.КвоДорожекНаВалу.Доступность(1); //Форма.кРасположениеРисунковНаВалу.Доступность(1); Если (ПустоеЗначение(ОсновнойМатериал)=0) Тогда Плотность=глПолучитьПериодическийАтрибутЭлементаСправочника(ОсновнойМатериал,"Плотность",ДатаДляЭкономистов); Грамматура=глПолучитьПериодическийАтрибутЭлементаСправочника(ОсновнойМатериал,"Граматура",ДатаДляЭкономистов); Если (Плотность=0)И(Грамматура<>0) Тогда Форма.ТолщинаОсновногоМатериала.Доступность(0); Иначе Форма.ТолщинаОсновногоМатериала.Доступность(1); КонецЕсли; Форма.Формат1.Доступность(1); Если фЛаминация=1 Тогда Форма.МатериалЛаминации1.Доступность(1); КонецЕсли; Иначе Форма.Формат1.Доступность(0); Форма.ШиринаСырьяОсновногоМатериала.Доступность(0); Форма.ТолщинаОсновногоМатериала.Доступность(0); Форма.МатериалЛаминации1.Доступность(0); КонецЕсли; Если (ПустоеЗначение(МатериалЛаминации1)=0)Тогда Плотность=глПолучитьПериодическийАтрибутЭлементаСправочника(МатериалЛаминации1,"Плотность",ДатаДляЭкономистов); Грамматура=глПолучитьПериодическийАтрибутЭлементаСправочника(МатериалЛаминации1,"Граматура",ДатаДляЭкономистов); Если (Плотность=0)И(Грамматура<>0) Тогда Форма.ТолщинаМатериалаЛаминации1.Доступность(0); Иначе Форма.ТолщинаМатериалаЛаминации1.Доступность(1); КонецЕсли; Форма.Формат2.Доступность(1); Форма.спТипПоставкиЛаминат1.Доступность(1); Если спТипПоставкиЛаминат1.ТекущаяСтрока()<>0 Тогда Если спТипПоставкиЛаминат1.ПолучитьЗначение(спТипПоставкиЛаминат1.ТекущаяСтрока())=2 Тогда Форма.кЧастПоставкаМатериалЛаминации1.Доступность(1); Иначе Форма.кЧастПоставкаМатериалЛаминации1.Доступность(0); КонецЕсли; КонецЕсли; Форма.МатериалЛаминации2.Доступность(1); Иначе Форма.МатериалЛаминации2.Доступность(0); Форма.Формат2.Доступность(0); Форма.ТолщинаМатериалаЛаминации1.Доступность(0); Форма.кЧастПоставкаМатериалЛаминации1.Доступность(0); Форма.спТипПоставкиЛаминат1.Доступность(0); КонецЕсли; Если ПустоеЗначение(МатериалЛаминации2)=0 Тогда Плотность=глПолучитьПериодическийАтрибутЭлементаСправочника(МатериалЛаминации2,"Плотность",ДатаДляЭкономистов); Грамматура=глПолучитьПериодическийАтрибутЭлементаСправочника(МатериалЛаминации2,"Граматура",ДатаДляЭкономистов); Если (Плотность=0)И(Грамматура<>0) Тогда Форма.ТолщинаМатериалаЛаминации2.Доступность(0); Иначе Форма.ТолщинаМатериалаЛаминации2.Доступность(1); КонецЕсли; Форма.Формат3.Доступность(1); Форма.спТипПоставкиЛаминат2.Доступность(1); Если спТипПоставкиЛаминат2.ТекущаяСтрока()<>0 Тогда Если спТипПоставкиЛаминат2.ПолучитьЗначение(спТипПоставкиЛаминат2.ТекущаяСтрока())=2 Тогда Форма.кЧастПоставкаМатериалЛаминации2.Доступность(1); Иначе Форма.кЧастПоставкаМатериалЛаминации2.Доступность(0); КонецЕсли; КонецЕсли; Иначе Форма.Формат3.Доступность(0); Форма.ТолщинаМатериалаЛаминации2.Доступность(0); Форма.спТипПоставкиЛаминат2.Доступность(0); КонецЕсли; КонецЕсли; Если ПустоеЗначение(ПДИТМенеджер)=0 Тогда Данные = ПДИТМенеджер.Данные; Если тбКонтрагенты.КоличествоСтрок()=0 Тогда Данные.ИзменятьСоставСтрок=0; Иначе Данные.ИзменятьСоставСтрок=1; КонецЕсли; КонецЕсли; Если (ЗакрытьДоступКТехнологичПолям=1) Тогда Форма.Менеджер.Доступность(0); Форма.спШиринаРезиновогоВала.Доступность(0); Форма.Клей.Доступность(0); Форма.спПечатныеМашины.Доступность(0); Форма.кКопироватьКраски.Доступность(0); Форма.фРучнойВводШириныРисунка.Доступность(0); Форма.спШиринаРезиновогоВала.Доступность(0); Форма.Клей.Доступность(0); Форма.ШиринаСырьяМатериалаЛаминации1.Доступность(0); Форма.ШиринаСырьяМатериалаЛаминации2.Доступность(0); Форма.КвоДорожекНаВалуКопия.Доступность(0); //Форма.кРасположениеРисунковНаВалуКопия.Доступность(0); Форма.кнЗаполнитьКраскиИзДизайнов.Доступность(0); Если ПустоеЗначение(ПДИнТбТехнолог)=0 Тогда Данные = ПДИнТбТехнолог.Данные; Данные.ИзменятьСоставСтрок=0; КонецЕсли; Иначе Если (фЛаминация=1)и(фПодписьЛаминаторщика<>1) Тогда Форма.спШиринаРезиновогоВала.Доступность(1); Форма.Клей.Доступность(1); Форма.спШиринаВала2.Доступность(1); //Форма.Клей2.Доступность(1); Иначе Форма.спШиринаРезиновогоВала.Доступность(0); Форма.Клей.Доступность(0); Форма.спШиринаВала2.Доступность(0); //Форма.Клей2.Доступность(0); КонецЕсли; Форма.КвоДорожекНаВалуКопия.Доступность(1); //Форма.кРасположениеРисунковНаВалуКопия.Доступность(1); Форма.кнЗаполнитьКраскиИзДизайнов.Доступность(1); Если (ПустоеЗначение(ОсновнойМатериал)=0) Тогда Форма.ШиринаСырьяОсновногоМатериала.Доступность(1); Иначе Форма.ШиринаСырьяОсновногоМатериала.Доступность(0); КонецЕсли; Если (ПустоеЗначение(МатериалЛаминации1)=0)Тогда Форма.ШиринаСырьяМатериалаЛаминации1.Доступность(1); Иначе Форма.ШиринаСырьяМатериалаЛаминации1.Доступность(0); КонецЕсли; Если ПустоеЗначение(МатериалЛаминации2)=0 Тогда Форма.ШиринаСырьяМатериалаЛаминации2.Доступность(1); Иначе Форма.ШиринаСырьяМатериалаЛаминации2.Доступность(0); КонецЕсли; КонецЕсли; Если ПустоеЗначение(ПДИнТбТехнолог)=0 Тогда Данные = ПДИнТбТехнолог.Данные; Данные.ИзменятьСоставСтрок=0; КонецЕсли; Если (ЗакрытьДоступКЭкономистПолям=1) Тогда Форма.кнПодписьТехнолога.Доступность(0); Форма.кнОтказТехнолога.Доступность(0); Форма.спДоставка.Доступность(0); Форма.ВыборДоставки.Доступность(0); Форма.Оплата1.Доступность(0); Форма.Оплата2.Доступность(0); Форма.кнОплатыДобавить.Доступность(0); Форма.кнОплатыУдалить.Доступность(0); //Форма.Безнал.Доступность(0); //Форма.Нал.Доступность(0); Форма.ДатаДляЭкономистов.Доступность(0); Форма.кРасчет.Доступность(0); Иначе //Форма.кнПодписьТехнолога.Доступность(1); //Форма.кнОтказТехнолога.Доступность(1); Форма.спДоставка.Доступность(1); Форма.Оплата1.Доступность(1); Форма.Оплата2.Доступность(1); Оплата3= тбОплаты.Итог("Процент"); Сумма=Оплата1+Оплата2+Оплата3; Если Оплата1=100 Тогда Форма.Оплата2.Доступность(0); Форма.кнОплатыДобавить.Доступность(0); Форма.кнОплатыУдалить.Доступность(0); ИначеЕсли Оплата1+Оплата2=100 Тогда Форма.кнОплатыДобавить.Доступность(0); Форма.кнОплатыУдалить.Доступность(0); ИначеЕсли Оплата1+Оплата2+Оплата3=100 Тогда Форма.кнОплатыДобавить.Доступность(0); Иначе Форма.кнОплатыДобавить.Доступность(1); Форма.кнОплатыУдалить.Доступность(1); КонецЕсли; Если (спДоставка.ПолучитьЗначение(спДоставка.ТекущаяСтрока())<>1)ИЛИ(Проведен()=1) Тогда Форма.ВыборДоставки.Доступность(0); Иначе Форма.ВыборДоставки.Доступность(1); КонецЕсли; Форма.ДатаДляЭкономистов.Доступность(1); Форма.кРасчет.Доступность(1); КонецЕсли; Если НестандартныеЧислаВДокументах=1 Тогда Форма.НестандартОбъем.Доступность(1); КонецЕсли; Если фФормыПродаютсяОтдельно=1 Тогда Форма.ПродажнаяСтоимостьФорм.Доступность(1); Форма.УстановленнаяЦенаБезФорм.Доступность(1); Форма.УстановленнаяЦена.Доступность(0); Иначе Форма.ПродажнаяСтоимостьФорм.Доступность(0); Форма.УстановленнаяЦенаБезФорм.Доступность(0); Форма.УстановленнаяЦена.Доступность(1); КонецЕсли; Если (НаборПрав="Экономист")Тогда Форма.СписокРасчитанныхОбъемов.Доступность(0); Форма.УстановленнаяЦена.Доступность(0); Форма.УстановленнаяЦенаПоДокументам.Доступность(0); Форма.Откат.Доступность(0); Форма.фФормыПродаютсяОтдельно.Доступность(0); Форма.ПродажнаяСтоимостьФорм.Доступность(0); Форма.НестандартОбъем.Доступность(0); КонецЕсли; КонецЕсли; Если (Выбран()=0)ИЛИ(РасчетСделан=0) Тогда ДоступностьКнопки=0; ИначеЕсли (ОбщийПродажныйОбъем=0) Тогда ДоступностьКнопки=0; ИначеЕсли ПустоеЗначение(НомерЗаказа)=1 Тогда ДоступностьКнопки=0; Иначе ДоступностьКнопки=1; КонецЕсли; Форма.кнЗаявкаНаСырье.Доступность(ДоступностьКнопки); Форма.кПрибыль.Заголовок("Доп.свед."); Если РасчетСделан=0 Тогда Форма.кПрибыль.Доступность(0); ИначеЕсли (ОбщийПродажныйОбъем=0) Тогда Форма.кПрибыль.Доступность(0); Иначе ЕстьОбъемИЦены=0; Для ыы=1 По тбКонтрагенты.КоличествоСтрок() Цикл УстановленныйОбъемТекЗаказчика=тбКонтрагенты.ПолучитьЗначение(ыы,"УстановленныйОбъем"); УстановленнаяЦенаТекЗаказчика=тбКонтрагенты.ПолучитьЗначение(ыы,"УстановленнаяЦена"); Если (УстановленныйОбъемТекЗаказчика=0)ИЛИ(УстановленнаяЦенаТекЗаказчика=0) Тогда ЕстьОбъемИЦены=0; Прервать; Иначе ЕстьОбъемИЦены=1; КонецЕсли; КонецЦикла; Если ЕстьОбъемИЦены=1 Тогда Если (ИмяПользователя()="zk96")ИЛИ (ИмяПользователя()="Вакиль") Тогда Форма.кПрибыль.Доступность(1); Иначе Форма.кПрибыль.Доступность(0); КонецЕсли; Иначе Форма.кПрибыль.Доступность(0); КонецЕсли; КонецЕсли; КоличествоКолонок=ТекущаяТаблица.КоличествоКолонок(); Если КоличествоКолонок<>0 Тогда Если ТекущаяТаблица.ПолучитьПараметрыКолонки(КоличествоКолонок)="ВложеннаяТаблица" Тогда ТекущаяТаблица.ВидимостьКолонки("ВложеннаяТаблица",0); КонецЕсли; КонецЕсли; Форма.кнИсторияНазад.Доступность(?(ТекПозицияВИстории>1,1,0)); Форма.кнИсторияВперед.Доступность(?( (спИстория.РазмерСписка()-ТекПозицияВИстории<>0) ,1,0)); ЧерныйЦвет=глПолучитьЦвет(0,0,0); СерыйЦвет=глПолучитьЦвет(200,200,200); Если Форма.кнДоговор.Доступность()=0 Тогда Форма.тДоговор.Цвет(СерыйЦвет); Иначе Форма.тДоговор.Цвет(ЧерныйЦвет); КонецЕсли; Если Форма.кнСпецификация.Доступность()=0 Тогда Форма.тСпецификация.Цвет(ЧерныйЦвет); Иначе Форма.тСпецификация.Цвет(ЧерныйЦвет); КонецЕсли; Если Форма.кнКомПредлжение.Доступность()=0 Тогда Форма.тКомПредлжение.Цвет(ЧерныйЦвет); Иначе Форма.тКомПредлжение.Цвет(ЧерныйЦвет); КонецЕсли; Если Форма.кнТехЗадание.Доступность()=0 Тогда Форма.тТехЗадание.Цвет(СерыйЦвет); Иначе Форма.тТехЗадание.Цвет(ЧерныйЦвет); КонецЕсли; Если Форма.кнТехКарта.Доступность()=0 Тогда Форма.тТехКарта.Цвет(СерыйЦвет); Иначе Форма.тТехКарта.Цвет(ЧерныйЦвет); КонецЕсли; Если Форма.кнЗаявкаНаСырье.Доступность()=0 Тогда Форма.тЗаявкаНаСырье.Цвет(СерыйЦвет); Иначе Форма.тЗаявкаНаСырье.Цвет(ЧерныйЦвет); КонецЕсли; Если Форма.кСоздатьКПЗ.Доступность()=0 Тогда Форма.тСоздатьКПЗ.Цвет(СерыйЦвет); Иначе Форма.тСоздатьКПЗ.Цвет(ЧерныйЦвет); КонецЕсли; Если Форма.кСоздатьСчет.Доступность()=0 Тогда Форма.тСоздатьСчет.Цвет(СерыйЦвет); Иначе Форма.тСоздатьСчет.Цвет(ЧерныйЦвет); КонецЕсли; Если Форма.кПерепечатка.Доступность()=0 Тогда Форма.тОткрытьПодчиненныйРасчет.Цвет(СерыйЦвет); Иначе Форма.тОткрытьПодчиненныйРасчет.Цвет(ЧерныйЦвет); КонецЕсли; Форма.Обновить(0); КонецФункции //====================================================================== Функция ВернутьАктуальностьЦены(Материал) Если (Материал.ВидМатериала=Перечисление.ВидыМатериалов.Полиэтилен) и (фЭкструзия=1) и (ПустоеЗначение(Материал.Замес)=0) Тогда //если наш Полиэтилен, то не будем проверять Возврат 1; КонецЕсли; Периодический=СоздатьОбъект("Периодический"); Периодический.ИспользоватьОбъект("Цена",Материал); Периодический.ВыбратьЗначения(НачМесяца(ДатаДляЭкономистов),КонМесяца(ДатаДляЭкономистов)); ЦенаАктуальна=0; Если Периодический.ПолучитьЗначение()=1 Тогда ЦенаАктуальна=1; КонецЕсли; Возврат ЦенаАктуальна; КонецФункции // ВернутьАктуальностьЦены //------------------------------------------------------------------------------------------------------------ Процедура ИзмНомер() //Фирма КонецПроцедуры //------------------------------------------------------------------------------------------------------------ Процедура ИзмДатаДок() Если ДатаДляЭкономистов<ДатаДок Тогда ДатаДляЭкономистов=ДатаДок; РасчетСделан=0; КонецЕсли; КонецПроцедуры //------------------------------------------------------------------------------------------------------------ Функция ВернутьАнилоксы(Машина) спрАнилоксы = СоздатьОбъект("Справочник.Анилоксы"); спрАнилоксы.ИспользоватьВладельца(Машина); сп=СоздатьОбъект("СписокЗначений"); спрАнилоксы.ВыбратьЭлементы(); Пока спрАнилоксы.ПолучитьЭлемент() = 1 Цикл Если спрАнилоксы.ПометкаУдаления() = 1 Тогда Продолжить; КонецЕсли; Анилокс=спрАнилоксы.ТекущийЭлемент(); сп.ДобавитьЗначение(Анилокс); КонецЦикла; сп.Сортировать(); Возврат сп; КонецФункции //------------------------------------------------------------------------- Функция ВернутьАнилоксПоУмолчанию(Машина,Краска) АнилоксыПоУмолчанию = СоздатьОбъект("Справочник.АнилоксыПоУмолчанию"); Если АнилоксыПоУмолчанию.НайтиПоРеквизиту("ПечатнаяМашина",Машина,1)=0 Тогда Возврат 0; КонецЕсли; ЭлементыАнилоксовПоУмолчанию = СоздатьОбъект("Справочник.ЭлементыАнилоксовПоУмолчанию"); ЭлементыАнилоксовПоУмолчанию.ИспользоватьВладельца(АнилоксыПоУмолчанию.ТекущийЭлемент()); //поищем точное соответствие ЭлементыАнилоксовПоУмолчанию.ВыбратьЭлементы(); Пока ЭлементыАнилоксовПоУмолчанию.ПолучитьЭлемент() = 1 Цикл Если ЭлементыАнилоксовПоУмолчанию.ПометкаУдаления() = 0 Тогда Если Краска = ЭлементыАнилоксовПоУмолчанию.Краска Тогда Возврат ЭлементыАнилоксовПоУмолчанию.Анилокс; КонецЕсли; КонецЕсли; КонецЦикла; //если не нашли и краска Пантон, то поищем для усредненного пантона Если (Краска.ВидМатериала=Перечисление.ВидыМатериалов.КраскаПантон)И(ПустоеЗначение(Константа.УсредненныйПантон)=0) Тогда ЭлементыАнилоксовПоУмолчанию.ВыбратьЭлементы(); Пока ЭлементыАнилоксовПоУмолчанию.ПолучитьЭлемент() = 1 Цикл Если ЭлементыАнилоксовПоУмолчанию.ПометкаУдаления() = 0 Тогда Если Константа.УсредненныйПантон = ЭлементыАнилоксовПоУмолчанию.Краска Тогда Возврат ЭлементыАнилоксовПоУмолчанию.Анилокс; КонецЕсли; КонецЕсли; КонецЦикла; КонецЕсли; Возврат 0; КонецФункции //------------------------------------------------------------------------- Функция ВернутьШиринуТекущегоРисунка(НомСтр) ВыбранВидПленки=0; Если (ВидПленки=Перечисление.ВидыПленки.ПолотноДляПакетов)И(фПакетоделание=1) Тогда ВыбранВидПленки=1; КонецЕсли; СохрНомерСтроки=НомерСтроки; ПолучитьСтрокуПоНомеру(НомСтр); Если (фПакетоделание=1)И(ВидПленки<>Перечисление.ВидыПленки.РукавДляПакетов)И(ВидПленки<>Перечисление.ВидыПленки.ПолуРукавДляПакетов) Тогда Ширина=(ВысотаДизайна+НижняяЗакладка)*2; Иначе Ширина=ШиринаДизайна; КонецЕсли; Если СохрНомерСтроки<>0 Тогда ПолучитьСтрокуПоНомеру(СохрНомерСтроки); КонецЕсли; Возврат Ширина; КонецФункции //------------------------------------------------------------------------- Функция ВернутьПлощадьПечатныхФормТекущегоРисункаСтрокой() Норма=0; Если фПечать=0 Тогда Возврат Норма; КонецЕсли; Если ПустоеЗначение(ПДИнТбТехнолог)=1 Тогда Возврат Норма; КонецЕсли; ИТЗТехнолог=ПДИнТбТехнолог.Данные.ИндексированнаяТаблица; ТекСтрока=ПДИнТбТехнолог.Данные.ТекущаяСтрока; Если ТекСтрока>ИТЗТехнолог.КоличествоСтрок() Тогда Возврат Норма; КонецЕсли; ТекДизайн=ИТЗТехнолог.ПолучитьЗначение(ТекСтрока,"Дизайн"); Если ИТСтрокиДокумента.НомерИндекса("инДизайн")=0 Тогда ИТСтрокиДокумента.ДобавитьИндекс("инДизайн","Дизайн"); КонецЕсли; НомСтр=ИТСтрокиДокумента.НайтиСтроку("инДизайн", ТекДизайн); Если НомСтр=0 Тогда Сообщить("Ошибка в ВернутьПлощадьПечатныхФормТекущегоРисункаСтрокой"); Возврат Норма; КонецЕсли; НомерСтрокиДокумента=ИТСтрокиДокумента.ПолучитьЗначение(НомСтр,"НомерСтрокиДокумента"); ТаблицаКрасок=ИТСтрокиДокумента.ПолучитьЗначение(НомСтр,"ТаблицаКрасок"); РазверткаТекущегоДизайна=ИТСтрокиДокумента.ПолучитьЗначение(НомСтр,"РазверткаДизайна"); СумКвоФотоФорм=ТаблицаКрасок.Итог("КвоФотоФорм");// Кол-во фотоформ, шт Ширина=ВернутьШиринуТекущегоРисунка(НомерСтрокиДокумента); СохрНомерСтроки=НомерСтроки; ПолучитьСтрокуПоНомеру(НомерСтрокиДокумента); Если (фРучнойВводШириныРисунка=1) Тогда Если (ШиринаФормы>0) И (ШиринаФормы<Ширина) Тогда ШиринаРасчитываемойФормы=ШиринаФормы; Иначе ШиринаРасчитываемойФормы=Ширина; КонецЕсли; Если (ВысотаФормы>0)И(ВысотаФормы<РазверткаТекущегоДизайна) Тогда ВысотаРасчитываемойФормы=ВысотаФормы; Иначе ВысотаРасчитываемойФормы=РазверткаТекущегоДизайна; КонецЕсли; Иначе ВысотаРасчитываемойФормы=РазверткаТекущегоДизайна; ШиринаРасчитываемойФормы=Ширина; КонецЕсли; Норма=(((ШиринаРасчитываемойФормы+20)/1000)*((ВысотаРасчитываемойФормы+15)/1000)*СумКвоФотоФорм )*1.15; Если СохрНомерСтроки<>0 Тогда ПолучитьСтрокуПоНомеру(СохрНомерСтроки); КонецЕсли; Возврат ""+Окр(Норма,5,1); КонецФункции //------------------------------------------------------------------------- Функция РасчитатьНормуДляПечатныхФормТекущегоДизайна(СписокДанных) ЕстьПечать=СписокДанных.Получить("ЕстьПечать"); ТаблицаКрасок=СписокДанных.Получить("тбКраски"); НомерСтрокиВТаблицеДизайнов=СписокДанных.Получить("НомерСтрокиВТаблицеДизайнов"); РазверткаТекущегоДизайна=СписокДанных.Получить("Развертка"); Норма=0; Если ЕстьПечать=0 Тогда Возврат Норма; КонецЕсли; СумКвоФотоФорм=ТаблицаКрасок.Итог("КвоФотоФорм");// Кол-во фотоформ, шт Ширина=ВернутьШиринуТекущегоРисунка(НомерСтрокиВТаблицеДизайнов); СохрНомерСтроки=НомерСтроки; ПолучитьСтрокуПоНомеру(ТекСтрокаТаблицаДизайновДляТехнолога); Если (фРучнойВводШириныРисунка=1) Тогда Если (ШиринаФормы>0) И (ШиринаФормы<Ширина) Тогда ШиринаРасчитываемойФормы=ШиринаФормы; Иначе ШиринаРасчитываемойФормы=Ширина; КонецЕсли; Если (ВысотаФормы>0)И(ВысотаФормы<РазверткаТекущегоДизайна) Тогда ВысотаРасчитываемойФормы=ВысотаФормы; Иначе ВысотаРасчитываемойФормы=РазверткаТекущегоДизайна; КонецЕсли; Иначе ВысотаРасчитываемойФормы=РазверткаТекущегоДизайна; ШиринаРасчитываемойФормы=Ширина; КонецЕсли; Норма=(((ШиринаРасчитываемойФормы+20)/1000)*((ВысотаРасчитываемойФормы+15)/1000)*СумКвоФотоФорм )*1.15; Если СохрНомерСтроки<>0 Тогда ПолучитьСтрокуПоНомеру(СохрНомерСтроки); КонецЕсли; Возврат Норма; КонецФункции //------------------------------------------------------------------------- Функция ВернутьШиринуРисунка() //ОбщаяШиринаВсехДизайновВОдномШагеПечати=0; СредняяШиринаРисунка=0; // //ИТСтрокиДокумента.ВНачало(); //Пока ИТСтрокиДокумента.СледующаяСтрока()=1 Цикл // КоличествоПовторенийНаОднойПриладке=КоличествоПовторенийНаОднойПриладке(ИТСтрокиДокумента.НомерСтрокиДокумента,ИТСтрокиДокумента.Дизайн); // +(ИТСтрокиДокумента.ШиринаДорожки*КоличествоПовторенийНаОднойПриладке); //КонецЦикла; // //КоличествоПовторенийНаОднойПриладке=КоличествоПовторенийНаОднойПриладке(0,""); //Если КоличествоПовторенийНаОднойПриладке=0 Тогда // СредняяШиринаРисунка= 0; //Иначе // СредняяШиринаРисунка= ОбщаяШиринаВсехДизайновВОдномШагеПечати/КоличествоПовторенийНаОднойПриладке; //КонецЕсли; // Возврат СредняяШиринаРисунка; КонецФункции //------------------------------------------------------------------------- Функция ВернутьПлощадьПечатнойФормыСтрокой() Если ИТСтрокиДокумента.НомерИндекса("инДизайн")=0 Тогда ИТСтрокиДокумента.ДобавитьИндекс("инДизайн","Дизайн"); КонецЕсли; СохрНомерСтроки=НомерСтроки; Если фЗапечаткаТекущДизайна=2 Тогда Возврат ВернутьПлощадьПечатныхФормТекущегоРисункаСтрокой(); Иначе СумНорма=0; Если фПечать=1 Тогда Если ПустаяСтрока(ПДИнТбТехнолог)=0 Тогда ИТЗТехнолог=ПДИнТбТехнолог.Данные.ИндексированнаяТаблица; ИТ=СоздатьОбъект("ИндексированнаяТаблица"); ИТ.Загрузить(ИТЗТехнолог); ИТ.ВНачало(); Пока ИТ.СледующаяСтрока()=1 Цикл ТекДизайн=ИТ.ПолучитьЗначение(,"Дизайн"); НомСтр=ИТСтрокиДокумента.НайтиСтроку("инДизайн", ТекДизайн); Если НомСтр<>0 Тогда ТаблицаКрасок=ИТСтрокиДокумента.ПолучитьЗначение(НомСтр,"ТаблицаКрасок"); Иначе Сообщить("Ошибкав ВернутьПлощадьПечатнойФормыСтрокой"); Возврат ""; КонецЕсли; РазверткаТекущегоДизайна=ИТ.ПолучитьЗначение(,"РазверткаДизайна"); СумКвоФотоФорм=ТаблицаКрасок.Итог("КвоФотоФорм");// Кол-во фотоформ, шт Ширина=ВернутьШиринуТекущегоРисунка(ИТ.НомерСтроки); ПолучитьСтрокуПоНомеру(ИТ.НомерСтроки); Если (фРучнойВводШириныРисунка=1) Тогда Если (ШиринаФормы>0) И (ШиринаФормы<Ширина) Тогда ШиринаРасчитываемойФормы=ШиринаФормы; Иначе ШиринаРасчитываемойФормы=Ширина; КонецЕсли; Если (ВысотаФормы>0)И(ВысотаФормы<РазверткаТекущегоДизайна) Тогда ВысотаРасчитываемойФормы=ВысотаФормы; Иначе ВысотаРасчитываемойФормы=РазверткаТекущегоДизайна; КонецЕсли; Иначе ВысотаРасчитываемойФормы=РазверткаТекущегоДизайна; ШиринаРасчитываемойФормы=Ширина; КонецЕсли; Норма=(((ШиринаРасчитываемойФормы+20)/1000)*((ВысотаРасчитываемойФормы+15)/1000)*СумКвоФотоФорм )*1.15; СумНорма=СумНорма+Норма; КонецЦикла; Если СохрНомерСтроки<>0 Тогда ПолучитьСтрокуПоНомеру(СохрНомерСтроки); КонецЕсли; КонецЕсли; КонецЕсли; Возврат ""+Окр(СумНорма,5,1); КонецЕсли; КонецФункции //------------------------------------------------------------------------- Процедура ОбнулитьКраски() ИТЗКраски = ПДИТКраски.Данные.ИндексированнаяТаблица; Если (ИТЗКраски.Итог("ПроцентЗапечатки")=0)И(ИТЗКраски.Итог("КвоФотоФорм")=0) Тогда Возврат; КонецЕсли; ИТЗКраски.ВНачало(); Пока ИТЗКраски.СледующаяСтрока()=1 Цикл ИТЗКраски.ПроцентЗапечатки=0; ИТЗКраски.ПроцентСвязующего=0; ИТЗКраски.КвоФотоФорм=0; КонецЦикла; КонецПроцедуры //------------------------------------------------------------------------------------------------------------ Процедура СформироватьФлажки() //флажки опереций ф1=фЭкструзия; ф2 =фПечать; ф3=фЛаминация; ф4 =фБабинорезка; ф5=фПакетоделание; ф6 =фФлексоформа; ф7 =фЕстьКлипсы; ф8 =фЕстьРасфасовка; //флажки распечатки ф9=фНеобходимыеОперации; ф10=фПараметрыГотовойПродукции; ф11=фПараметрыИспользуемогоМатериала; ф12=фОбъемСырья; ф13=фЦеныПродукцииВкг; ф14=фЦеныПродукцииВшт; ф15=фТехнологическиеПараметры; ф16=0; //флажки технолога ф17=фРасположилиРисункиНаВалу; ф18=фРучнойВводШириныРисунка; ф19=фПодобралиРазвертки; ф20=0; ф21=0; ф22=0; ф23=0; ф24=0; //флажки экономиста ф25=0; ф26=КакСчитаем; ф27=РасчетСделан; ф28=0; ф29=0; ф30=0; ф31=0; ф32=0; Флажки=""+ф1+ф2+ф3+ф4+ф5+ф6+ф7+ф8+ф9+ф10+ф11+ф12+ф13+ф14+ф15+ф16+ф17+ф18+ф19+ф20+ф21+ф22+ф23+ф24+ф25+ф26+ф27+ф28+ф29+ф30+ф31+ф32; КонецПроцедуры //------------------------------------------------------------------------------------------------------------ Процедура ИзмОперации() Если тбКонтрагенты.КоличествоСтрок()=0 Тогда фЭкструзия=0; фПечать=0; фЛаминация=0; фБабинорезка=0; фПакетоделание=0; фФлексоформа=0; фЕстьКлипсы=0; фЕстьРасфасовка=0; Предупреждение("Не указан заказчик"); СтатусВозврата(0); Возврат; КонецЕсли; Если ПустоеЗначение(Менеджер)=1 Тогда фЭкструзия=0; фПечать=0; фЛаминация=0; фБабинорезка=0; фПакетоделание=0; фФлексоформа=0; Предупреждение("Не указан менеджер"); СтатусВозврата(0); Возврат; КонецЕсли; Если (фЭкструзия=0) И (фПечать=0)И (фЛаминация=0) И (фБабинорезка=0)И(фПакетоделание=0) Тогда Если ПустоеЗначение(ОсновнойМатериал)=0 Тогда ВспомогПроцедура(тбИсторияДокумента,"Изменения",глПользователь,"Операции","Сняты флаги операций"); КонецЕсли; ОсновнойМатериал=""; Формат1=0; ШиринаСырьяОсновногоМатериала=0; ТолщинаОсновногоМатериала=0; КонецЕсли; Если фЛаминация=0 Тогда МатериалЛаминации1=""; Формат2=0; ШиринаСырьяМатериалаЛаминации1=0; ТолщинаМатериалаЛаминации1=0; МатериалЛаминации2=""; ТолщинаМатериалаЛаминации2=0; Формат3=0; ШиринаСырьяМатериалаЛаминации2=0; КонецЕсли; Если фПечать=0 Тогда ОбнулитьКраски(); Иначе КонецЕсли; Если фФлексоформа=1 Тогда КонецЕсли; Если фЭкструзия=0 Тогда //без СЭкструзией КонецЕсли; Данные = ПДИнТбТехнолог.Данные; ИТЗТехнолог=Данные.ИндексированнаяТаблица; Колонки=Данные.Колонки; Если фПакетоделание=1 Тогда Колонки.БоковаяЗакладка.Видимость=1; Колонки.НижняяЗакладка.Видимость=1; Колонки.ВерхняяЗакладка.Видимость=1; Колонки.ТипПакета.Видимость=1; Колонки.ТипРучки.Видимость=1; Иначе Колонки.БоковаяЗакладка.Видимость=0; Колонки.НижняяЗакладка.Видимость=0; Колонки.ВерхняяЗакладка.Видимость=0; Колонки.ТипПакета.Видимость=0; Колонки.ТипРучки.Видимость=0; ВыбратьСтроки(); Пока ПолучитьСтроку()=1 Цикл ТипПакета=Перечисление.ТипыПакетов.НеПакет; БоковаяЗакладка=0; НижняяЗакладка=0; ВерхняяЗакладка=0; ДлинаДна=0; ШиринаРучки=0; ДлинаРучки=0; ВесРучки=0; ДноОсновнойСлой=""; ДноСлойЛаминации1=""; ДноСлойЛаминации2=""; ТолщинаОснСлояДна=0; ТолщинаЛамСлоя1Дна=0; ТолщинаЛамСлоя2Дна=0; ЗамесРучки=""; ТипРучки=Перечисление.ТипыРучек.БезРучки; КонецЦикла; фЕстьКлипсы=0; фЕстьРасфасовка=0; КонецЕсли; Если фБабинорезка=1 Тогда КонецЕсли; РасчетСделан=0; СформироватьФлажки(); ОбновитьТаблицыДокумента(); КонецПроцедуры //------------------------------------------------------------------------------------------------------------ Процедура ИзмТипПоставки(КакойМатериал) Если КакойМатериал="ОсновнойМатериал" Тогда НовКоефНашегоОснМатериала=спТипПоставкиПечать.ПолучитьЗначение(спТипПоставкиПечать.ТекущаяСтрока()); Если КоефНашегоОснМатериала<>НовКоефНашегоОснМатериала Тогда КоефНашегоОснМатериала=НовКоефНашегоОснМатериала; РасчетСделан=0; Если КоефНашегоОснМатериала<>2 Тогда ДавальческийВесОснМатериала=0; Форма.кЧастПоставкаОснМатериал.Заголовок("..."); КонецЕсли; ВспомогПроцедура(тбИсторияДокумента,"Изменения",глПользователь,"спТипПоставкиПечать", "Изменен Тип Поставки основного материала на "+(?(КоефНашегоОснМатериала=0,"Заказчика","Собственный"))); КонецЕсли; ИначеЕсли КакойМатериал="МатериалЛаминации1" Тогда НовКоефНашегоМатериалаЛаминации1=спТипПоставкиЛаминат1.ПолучитьЗначение(спТипПоставкиЛаминат1.ТекущаяСтрока()); Если КоефНашегоМатериалаЛаминации1<>НовКоефНашегоМатериалаЛаминации1 Тогда КоефНашегоМатериалаЛаминации1=НовКоефНашегоМатериалаЛаминации1; Если КоефНашегоМатериалаЛаминации1<>2 Тогда ДавальческийВесМатериалаЛаминации1=0; Форма.кЧастПоставкаМатериалЛаминации1.Заголовок("..."); КонецЕсли; РасчетСделан=0; ВспомогПроцедура(тбИсторияДокумента,"Изменения",глПользователь,"спТипПоставкиЛаминат1", "Изменен Тип Поставки материала 1-й ламинации на "+(?(КоефНашегоМатериалаЛаминации1=0,"Заказчика","Собственный"))); КонецЕсли; ИначеЕсли КакойМатериал="МатериалЛаминации2" Тогда НовКоефНашегоМатериалаЛаминации2=спТипПоставкиЛаминат2.ПолучитьЗначение(спТипПоставкиЛаминат2.ТекущаяСтрока()); Если КоефНашегоМатериалаЛаминации2<>НовКоефНашегоМатериалаЛаминации2 Тогда КоефНашегоМатериалаЛаминации2=НовКоефНашегоМатериалаЛаминации2; Если КоефНашегоМатериалаЛаминации2<>2 Тогда ДавальческийВесМатериалаЛаминации2=0; Форма.кЧастПоставкаМатериалЛаминации2.Заголовок("..."); КонецЕсли; РасчетСделан=0; ВспомогПроцедура(тбИсторияДокумента,"Изменения",глПользователь,"спТипПоставкиЛаминат2", "Изменен Тип Поставки материала 2-й ламинации на "+(?(КоефНашегоМатериалаЛаминации2=0,"Заказчика","Собственный"))); КонецЕсли; КонецЕсли; КонецПроцедуры //====================================================================== Процедура ИзмЧастичнаяПоставка(КакаяКнопка) Если КакаяКнопка= "кЧастПоставкаОснМатериал" Тогда НовыйВес=ДавальческийВесОснМатериала; Если ВвестиЧисло(НовыйВес,"Вес давальческ.сырья",10,2,60)=1 Тогда ДавальческийВесОснМатериала=НовыйВес; Если ДавальческийВесОснМатериала=0 Тогда Заголовок="..."; Иначе Заголовок=""+ДавальческийВесОснМатериала; КонецЕсли; Форма.кЧастПоставкаОснМатериал.Заголовок(Заголовок); РасчетСделан=0; КонецЕсли; ИначеЕсли КакаяКнопка= "кЧастПоставкаМатериалЛаминации1" Тогда НовыйВес=ДавальческийВесМатериалаЛаминации1; Если ВвестиЧисло(НовыйВес,"Вес давальческ.сырья",10,2,60)=1 Тогда ДавальческийВесМатериалаЛаминации1=НовыйВес; Если ДавальческийВесМатериалаЛаминации1=0 Тогда Заголовок="..."; Иначе Заголовок=""+ДавальческийВесМатериалаЛаминации1; КонецЕсли; Форма.кЧастПоставкаМатериалЛаминации1.Заголовок(Заголовок); РасчетСделан=0; КонецЕсли; ИначеЕсли КакаяКнопка= "кЧастПоставкаМатериалЛаминации2" Тогда НовыйВес=ДавальческийВесМатериалаЛаминации2; Если ВвестиЧисло(НовыйВес,"Вес давальческ.сырья",10,2,60)=1 Тогда ДавальческийВесМатериалаЛаминации2=НовыйВес; Если ДавальческийВесМатериалаЛаминации2=0 Тогда Заголовок="..."; Иначе Заголовок=""+ДавальческийВесМатериалаЛаминации2; КонецЕсли; Форма.кЧастПоставкаМатериалЛаминации2.Заголовок(Заголовок); РасчетСделан=0; КонецЕсли; КонецЕсли; КонецПроцедуры // ИзмЧастичнаяПоставка //------------------------------------------------------------------------------------------------------------ Функция ВернутьСреднююШиринуДизайна() СредняяШиринаДизайна=0; //ИТСтрокиДокумента.ВыбратьСтроки(); //СуммаШиринВсехДизайнов=0; //Пока ИТСтрокиДокумента.ПолучитьСтроку()=1 Цикл // КоличествоПовторенийДизайнаВЗаказе=КоличествоПовторенийДизайнаВЗаказе(ИТСтрокиДокумента.НомерСтрокиДокумента,ИТСтрокиДокумента.Дизайн); // Ширина= ИТСтрокиДокумента.ШиринаДорожки*КоличествоПовторенийДизайнаВЗаказе; // СуммаШиринВсехДизайнов= СуммаШиринВсехДизайнов+ Ширина; //КонецЦикла; //КоличествоПовторенийДизайнаВЗаказе=КоличествоПовторенийДизайнаВЗаказе(0,""); //СредняяШиринаДизайна=СуммаШиринВсехДизайнов/КоличествоПовторенийДизайнаВЗаказе; Возврат СредняяШиринаДизайна; КонецФункции //------------------------------------------------------------------------------------------------------------ Функция ВернутьОбязятельнуюКромку() ОбязятельнаяКромка=0; ИТСтрокиДокумента.ВыбратьСтроки(); Пока ИТСтрокиДокумента.ПолучитьСтроку()=1 Цикл Если (ИТСтрокиДокумента.ТипПакета=Перечисление.ТипыПакетов.СПетлевойРучкой) И((ВидПленки=Перечисление.ВидыПленки.ПолотноДляПакетов)или ((ВидПленки=Перечисление.ВидыПленки.ПолотноДляПленки)) ) Тогда Если ИТСтрокиДокумента.ВерхняяЗакладка=0 Тогда ОбязятельнаяКромка=ОбязятельнаяКромка+20; Прервать; КонецЕсли; ИначеЕсли(ИТСтрокиДокумента.ТипПакета=Перечисление.ТипыПакетов.СПрорезнойРучкой) И((ВидПленки=Перечисление.ВидыПленки.ПолотноДляПакетов)или ((ВидПленки=Перечисление.ВидыПленки.ПолотноДляПленки)) ) Тогда ОбязятельнаяКромка=ОбязятельнаяКромка+20; Прервать; КонецЕсли; КонецЦикла; Возврат ОбязятельнаяКромка; КонецФункции //------------------------------------------------------------------------------------------------------------ Функция ВсеЛиДизайныРазмещены(ВыводитьПредупреждение=1) КоличествоСтрок=БольшаяТаблицаРасположенияДизайновНаВалу.КоличествоСтрок(); КоличествоКолонок=БольшаяТаблицаРасположенияДизайновНаВалу.КоличествоКолонок(); //проверим все ли дизайны размещены ИТСтрокиДокумента.ВыбратьСтроки(); Пока ИТСтрокиДокумента.ПолучитьСтроку()=1 Цикл ТекущДизайн=ИТСтрокиДокумента.Дизайн; Нашли=0; Для НомСтр=1 По КоличествоСтрок Цикл Для НомКол=1 По КоличествоКолонок Цикл Значение=БольшаяТаблицаРасположенияДизайновНаВалу.ПолучитьЗначение(НомСтр,НомКол); Если ПустоеЗначение(Значение)=1 Тогда Продолжить; КонецЕсли; Если Значение.Получить("Дизайн") = ТекущДизайн Тогда Нашли=1; Прервать; КонецЕсли; КонецЦикла; Если Нашли=1 Тогда Прервать; КонецЕсли; КонецЦикла; Если Нашли=0 Тогда Если ВыводитьПредупреждение=1 Тогда Предупреждение("Не указано расположение для "+ТекущДизайн); Возврат 0; КонецЕсли; КонецЕсли; КонецЦикла; Возврат 1; КонецФункции //------------------------------------------------------------------------------------------------------------ Функция ВернутьШагПечати(ВыводитьПредупреждение=1) КоличествоСтрок=БольшаяТаблицаРасположенияДизайновНаВалу.КоличествоСтрок(); КоличествоКолонок=БольшаяТаблицаРасположенияДизайновНаВалу.КоличествоКолонок(); //проверим суммы шагов печати каждой колонки. они должны быть равны между собой //Если есть переклейка, то проверяем до переклейки Для НомСтр=1 По КоличествоСтрок Цикл Значение=БольшаяТаблицаРасположенияДизайновНаВалу.ПолучитьЗначение(НомСтр,1); Если ПустоеЗначение(Значение)=1 Тогда Продолжить; КонецЕсли; Если (Значение.Получить("НомерДизайна")=0) И (Значение.Получить("Дизайн")="Переклейка") Тогда КоличествоСтрок=НомСтр; Прервать; КонецЕсли; КонецЦикла; СписокСуммШаговПечатиКолонок= СоздатьОбъект("СписокЗначений"); Для НомКол=1 По КоличествоКолонок Цикл СуммаШаговПечатиКолонки=0; ПредШиринаДорожки=0; Для НомСтр=1 По КоличествоСтрок Цикл Значение=БольшаяТаблицаРасположенияДизайновНаВалу.ПолучитьЗначение(НомСтр,НомКол); Если ПустоеЗначение(Значение)=1 Тогда Продолжить; КонецЕсли; ТекущДизайн=Значение.Получить("Дизайн"); Если ПустоеЗначение(ТекущДизайн)=1 Тогда Продолжить; КонецЕсли; ТекШагПечати=Значение.Получить("ШагПечати"); СуммаШаговПечатиКолонки=СуммаШаговПечатиКолонки+ТекШагПечати; КонецЦикла; СписокСуммШаговПечатиКолонок.ДобавитьЗначение(СуммаШаговПечатиКолонки); КонецЦикла; ВычисленныйШагПечати=0; Если СписокСуммШаговПечатиКолонок.РазмерСписка()=1 Тогда ВычисленныйШагПечати= СписокСуммШаговПечатиКолонок.ПолучитьЗначение(1); Иначе Для ы1=1 По (СписокСуммШаговПечатиКолонок.РазмерСписка()-1) Цикл СуммаШаговПечатиКолонки1=СписокСуммШаговПечатиКолонок.ПолучитьЗначение(ы1); СуммаШаговПечатиКолонки1=Окр(СуммаШаговПечатиКолонки1,0,1); Если ВычисленныйШагПечати<СуммаШаговПечатиКолонки1 Тогда ВычисленныйШагПечати=СуммаШаговПечатиКолонки1; КонецЕсли; Для ы2=ы1+1 По СписокСуммШаговПечатиКолонок.РазмерСписка() Цикл СуммаШаговПечатиКолонки2=СписокСуммШаговПечатиКолонок.ПолучитьЗначение(ы2); СуммаШаговПечатиКолонки2=Окр(СуммаШаговПечатиКолонки2,0,1); Если СуммаШаговПечатиКолонки1<>СуммаШаговПечатиКолонки2 Тогда Если ВыводитьПредупреждение=1 Тогда Предупреждение("Не правильно указано расположение дизайнов.Не соответсвуют размеры "); Возврат 0; КонецЕсли; КонецЕсли; Если ВычисленныйШагПечати<СуммаШаговПечатиКолонки2 Тогда ВычисленныйШагПечати=СуммаШаговПечатиКолонки2; КонецЕсли; КонецЦикла; КонецЦикла; КонецЕсли; Возврат ВычисленныйШагПечати; КонецФункции //------------------------------------------------------------------------------------------------------------ Процедура ИзменитьЗначенияВБольшойТаблицыРасположенияДизайновНаВалу(НомерСтрокиДокумента,Действие) Добавить=1; Удалить=2;Редактировать=3;УдалитьПереклейку=4; КоличествоСтрок=БольшаяТаблицаРасположенияДизайновНаВалу.КоличествоСтрок(); КоличествоКолонок=БольшаяТаблицаРасположенияДизайновНаВалу.КоличествоКолонок(); Если (Действие=Удалить)ИЛИ(Действие=Редактировать) Тогда Если НомерСтрокиДокумента=0 Тогда Возврат; КонецЕсли; Для НомКол=1 По КоличествоКолонок Цикл Для НомСтр=1 По КоличествоСтрок Цикл Значение=БольшаяТаблицаРасположенияДизайновНаВалу.ПолучитьЗначение(НомСтр,НомКол); Если ПустоеЗначение(Значение)=1 Тогда Продолжить; КонецЕсли; Если Действие=Удалить Тогда Если Значение.Получить("НомерДизайна")=НомерСтрокиДокумента Тогда Значение=""; БольшаяТаблицаРасположенияДизайновНаВалу.УстановитьЗначение(НомСтр,НомКол,Значение); КонецЕсли; ИначеЕсли Действие=Редактировать Тогда ИТСтрокиДокумента.НомерСтроки=(НомерСтрокиДокумента); Если (Значение.Получить("НомерДизайна")=ИТСтрокиДокумента.НомерСтрокиДокумента) Тогда Если (Значение.Получить("Дизайн")<>ИТСтрокиДокумента.Дизайн) ИЛИ (Значение.Получить("ШагПечати")<>ИТСтрокиДокумента.ШагПечати) ИЛИ (Значение.Получить("ШиринаДорожки")<>ИТСтрокиДокумента.ШиринаДорожки)Тогда Значение.Установить("НомерДизайна",ИТСтрокиДокумента.НомерСтрокиДокумента); Значение.Установить("Дизайн",ИТСтрокиДокумента.Дизайн); Значение.Установить("ШагПечати",ИТСтрокиДокумента.ШагПечати); Значение.Установить("ШиринаДорожки",ИТСтрокиДокумента.ШиринаДорожки); БольшаяТаблицаРасположенияДизайновНаВалу.УстановитьЗначение(НомСтр,НомКол,Значение); КонецЕсли; КонецЕсли; КонецЕсли; КонецЦикла; КонецЦикла; ИначеЕсли (Действие=УдалитьПереклейку) Тогда ПерваяУдаляемаяСтрока=0; Для НомСтр=1 По КоличествоСтрок Цикл Значение=БольшаяТаблицаРасположенияДизайновНаВалу.ПолучитьЗначение(НомСтр,1); Если ПустоеЗначение(Значение)=1 Тогда Продолжить; КонецЕсли; Если (Значение.Получить("НомерДизайна")=0) И (Значение.Получить("Дизайн")="Переклейка") Тогда ПерваяУдаляемаяСтрока=НомСтр; Прервать; КонецЕсли; КонецЦикла; Если ПустоеЗначение(ПерваяУдаляемаяСтрока)=0 Тогда Пока 1=1 Цикл Если БольшаяТаблицаРасположенияДизайновНаВалу.КоличествоСтрок()<ПерваяУдаляемаяСтрока Тогда Прервать; КонецЕсли; БольшаяТаблицаРасположенияДизайновНаВалу.УдалитьСтроку(ПерваяУдаляемаяСтрока); КонецЦикла; КонецЕсли; КонецЕсли; КонецПроцедуры //------------------------------------------------------------------------------------------------------------ Процедура ИзмФлагПереклейка() Если фПереклейка=1 Тогда КоличествоСтрок=ОбщаяРасчетнаяТаблица.КоличествоСтрок(); Если КоличествоСтрок=0 Тогда Предупреждение("Добавте расчетный объем"); фПереклейка=0; Возврат; ИначеЕсли КоличествоСтрок<>1 Тогда Предупреждение("Переклейку можно расчитывать только на один расчетный объем"); фПереклейка=0; Возврат; КонецЕсли; ИначеЕсли фПереклейка=0 Тогда ИзменитьЗначенияВБольшойТаблицыРасположенияДизайновНаВалу(0,4); КонецЕсли; КонецПроцедуры //------------------------------------------------------------------------------------------------------------ Функция ЗагрузитьТаблицуКрасокДизайна(спрТаблицаКрасок,ТаблицаКрасок,ОбнулитьФормы=0) Далее //------------------------------------------------------------------------------------------------------------ Функция ПодборКрасокДизайна(ВыбранЗаказчик,ВыбранДизайн,СостояниеВыбранДизайна,ТаблицаКрасокДизайна) Если СостояниеВыбранДизайна=Перечисление.СостояниеДизайна.Новый Тогда Иначе Регистры=СоздатьОбъект("Регистры"); Рег = Регистры.ДанныеПоРасчетам; Рег.УстановитьЗначениеФильтра("Контрагент",ВыбранЗаказчик,2); Рег.УстановитьЗначениеФильтра("ТМЦ",ВыбранДизайн,2); Рег.ОбратныйПорядок(1); Рег.ВыбратьДвижения(); Если Рег.ПолучитьДвижение()=1 Тогда спрТаблицаКрасок=Рег.ТаблицаКрасокДизайна; ЗагрузитьТаблицуКрасокДизайна(спрТаблицаКрасок,ТаблицаКрасокДизайна,1); Иначе КонецЕсли; КонецЕсли; Возврат ТаблицаКрасокДизайна; КонецФункции //------------------------------------------------------------------------------------------------------------ Процедура ПодборРазвертки() Далее Процедура ПодборРезиновогоВала() Далее Процедура ЗаполнитьКраскиИзДизайнов() Далее //------------------------------------------------------------------------------------------------------------ Процедура ИзмДизайны(Действие,ОткудаОткрывают="МногострочнаяЧасть") //Добавить - Изменение=1, Удалить - Изменение=2 Редактировать - Изменение=3 Добавить=1; Удалить=2;Редактировать=3;Копировать=4; Если тбКонтрагенты.КоличествоСтрок()=0 Тогда Возврат; КонецЕсли; НаборПрав=НазваниеНабораПрав(); //Если (НаборПрав="Администратор")Тогда // ЗакрытьДоступСтраницаМенеджер=0; //ИначеЕсли (НаборПрав="ГлавныйЭкономист") Тогда // ЗакрытьДоступСтраницаМенеджер=0; //ИначеЕсли (фПодписьМенеджера=1) Тогда // ЗакрытьДоступСтраницаМенеджер=1; //Иначе // ЗакрытьДоступСтраницаМенеджер=0; //КонецЕсли; // //Если (НаборПрав="Администратор")Тогда // ЗакрытьДоступКТехнологичПолям=0; //ИначеЕсли (НаборПрав="ГлавныйЭкономист") Тогда // ЗакрытьДоступКТехнологичПолям=0; //ИначеЕсли (фПодписьТехнолога=1) Тогда // ЗакрытьДоступКТехнологичПолям=1; //Иначе // ЗакрытьДоступКТехнологичПолям=0; //КонецЕсли; НомерСтрокиДокумента=0; КоличествоСтрок=КоличествоСтрок(); Если ОткудаОткрывают="ТаблицаДизайновДляТехнолога" Тогда //Если ЗакрытьДоступКТехнологичПолям=1 Тогда // Возврат; //КонецЕсли; ТекСтрока=ПДИнТбТехнолог.Данные.ТекущаяСтрока; Если (ПустоеЗначение(ТекСтрока)=0) Тогда НомерСтрокиДокумента=ТекСтрока; КонецЕсли; ИначеЕсли ОткудаОткрывают="ТаблицаДизайновДляМенеджера" Тогда //Если (ЗакрытьДоступКТехнологичПолям=1)ИЛИ(ЗакрытьДоступСтраницаМенеджер=1) Тогда // Возврат; //КонецЕсли; ТекСтрока=ПДИТМенеджер.Данные.ТекущаяСтрока; ИТЗМенеджер=ПДИТМенеджер.Данные.ИндексированнаяТаблица; Если (ПустоеЗначение(ТекСтрока)=0) Тогда НомерСтрокиДокумента=ИТЗМенеджер.ПолучитьЗначение(ТекСтрока,"НомерСтрокиДокумента"); КонецЕсли; Иначе НомерСтрокиДокумента=НомерСтроки; КонецЕсли; Если Действие = Удалить Тогда Если Форма.ТолькоПросмотр()=1 Тогда Возврат; ИначеЕсли Проведен()=1 Тогда Предупреждение("Нельзя изменять в поведенном документе!"); Возврат; ИначеЕсли ЗакрытьДоступ=1 Тогда Предупреждение("Изменение запрещено !"); Возврат; КонецЕсли; Если (КоличествоСтрок = 0)или (НомерСтрокиДокумента=0) Тогда Возврат; КонецЕсли; Если Вопрос("Вы действительно хотите удалить строку?","Да+Нет",60)<>"Да" Тогда СтатусВозврата(0); Возврат; КонецЕсли; ПолучитьСтрокуПоНомеру(НомерСтрокиДокумента); УдалитьСтроку(); ОбновитьТаблицыДокумента(); ИзменитьЗначенияВБольшойТаблицыРасположенияДизайновНаВалу(НомерСтрокиДокумента,Удалить); ВспомогПроцедура(тбИсторияДокумента,"Изменения",глПользователь,"СтрокаМногострочнойЧасти", "Удалена строка документа "+Дизайн); КоличествоСтрок=КоличествоСтрок-1; фРасположилиРисункиНаВалу=0 ; РасчетСделан=0; ИначеЕсли Действие = Добавить Тогда Если Форма.ТолькоПросмотр()=1 Тогда Возврат; ИначеЕсли Проведен()=1 Тогда Предупреждение("Нельзя изменять в поведенном документе!"); Возврат; ИначеЕсли ЗакрытьДоступ=1 Тогда Предупреждение("Изменение запрещено !"); Возврат; КонецЕсли; ПредРазвертка=0; НоваяСтрока(); НомерСтрокиДокумента=НомерСтроки; фСохранитьИзменения=0; Если фПакетоделание=0 Тогда ОткрытьФормуМодально("Обработка.ВыборДизайна1",Контекст); Иначе ОткрытьФормуМодально("Обработка.ВыборДизайна2",Контекст); КонецЕсли; Если фСохранитьИзменения=0 Тогда ПолучитьСтрокуПоНомеру(НомерСтрокиДокумента); УдалитьСтроку(); Возврат; КонецЕсли; ВспомогПроцедура(тбИсторияДокумента,"Изменения",глПользователь,"СтрокаМногострочнойЧасти", "Добавлена строка документа "+Дизайн); ИначеЕсли Действие = Редактировать Тогда Если (КоличествоСтрок=0)или (НомерСтрокиДокумента=0) Тогда Предупреждение("Добавте строку"); Возврат; КонецЕсли; ПолучитьСтрокуПоНомеру(НомерСтрокиДокумента); СтарДизайн=Дизайн; СтарСостояниеДизайна=СостояниеДизайна; Если фПакетоделание=0 Тогда ОткрытьФормуМодально("Обработка.ВыборДизайна1",Контекст); Иначе ОткрытьФормуМодально("Обработка.ВыборДизайна2",Контекст); КонецЕсли; ОбновитьТаблицыДокумента(); ИзменитьЗначенияВБольшойТаблицыРасположенияДизайновНаВалу(НомерСтрокиДокумента,Редактировать); ВспомогПроцедура(тбИсторияДокумента, "Изменения", глПользователь, "СтрокаМногострочнойЧасти", "Изменена строка документа "+Дизайн); ИначеЕсли Действие = Копировать Тогда ПолучитьСтрокуПоНомеру(НомерСтрокиДокумента); СтарЗаказчик=Заказчик; СтарДизайн=Дизайн; СтарШагПечати=ШагПечати; СтарШиринаДорожки=ШиринаДорожки; СтарВысотаДизайна=ВысотаДизайна; СтарШиринаДизайна=ШиринаДизайна; СтарВысотаФормы=ВысотаФормы; СтарШиринаФормы=ШиринаФормы; СтарСостояниеДизайна=СостояниеДизайна; СтарРазверткаДизайна=РазверткаДизайна; СтарРисунокДизайна=РисунокДизайна; СтарТипПакета=ТипПакета; СтарБоковаяЗакладка=БоковаяЗакладка; СтарНижняяЗакладка=НижняяЗакладка; СтарВерхняяЗакладка=ВерхняяЗакладка; СтарДлинаДна=ДлинаДна; СтарШиринаРучки=ШиринаРучки; СтарДлинаРучки=ДлинаРучки; СтарВесРучки=ВесРучки; СтарТипРучки=ТипРучки; СтарЗамесРучки=ЗамесРучки; СтарРазверткаДизайна=РазверткаДизайна; СтарРисунокДизайна=РисунокДизайна; НоваяСтрока(); Заказчик=СтарЗаказчик; Дизайн=СтарДизайн; ШагПечати=СтарШагПечати; ШиринаДорожки=СтарШиринаДорожки; ВысотаДизайна=СтарВысотаДизайна; ШиринаДизайна=СтарШиринаДизайна; ВысотаФормы=СтарВысотаФормы; ШиринаФормы=СтарШиринаФормы; СостояниеДизайна=СтарСостояниеДизайна; ТипПакета=СтарТипПакета; БоковаяЗакладка=СтарБоковаяЗакладка; НижняяЗакладка=СтарНижняяЗакладка; ВерхняяЗакладка=СтарВерхняяЗакладка; ДлинаДна=СтарДлинаДна; ШиринаРучки=СтарШиринаРучки; ДлинаРучки=СтарДлинаРучки; ВесРучки=СтарВесРучки; ТипРучки=СтарТипРучки; ЗамесРучки=СтарЗамесРучки; РазверткаДизайна=СтарРазверткаДизайна; //РисунокДизайна=СтарРисунокДизайна; НомерСтрокиДокумента=НомерСтроки; фСохранитьИзменения=0; Если фПакетоделание=0 Тогда ОткрытьФормуМодально("Обработка.ВыборДизайна1",Контекст); Иначе ОткрытьФормуМодально("Обработка.ВыборДизайна2",Контекст); КонецЕсли; Если фСохранитьИзменения=0 Тогда ПолучитьСтрокуПоНомеру(НомерСтрокиДокумента); УдалитьСтроку(); Возврат; КонецЕсли; РасчетСделан=0; фРасположилиРисункиНаВалу=0 ; ВспомогПроцедура(тбИсторияДокумента, "Изменения", глПользователь, "СтрокаМногострочнойЧасти", "Добавлена строка документа "+Дизайн); КонецЕсли; ПолучитьСтрокуПоНомеру(НомерСтрокиДокумента); Ширина=ВернутьШиринуТекущегоРисунка(НомерСтрокиДокумента); ОбновитьТаблицыДокумента(); КонецПроцедуры //------------------------------------------------------------------------------------------------------------ Процедура СоздатьТаблицуРасположенияДизайновНаВалу() Далее //------------------------------------------------------------------------------------------------------------ Процедура ИзмКвоДорожекНаВалуКопия() КвоДорожекНаВалу=КвоДорожекНаВалуКопия; СоздатьТаблицуРасположенияДизайновНаВалу(); РасчетСделан=0; КонецПроцедуры //------------------------------------------------------------------------------------------------------------ Процедура ИзмКвоДорожекНаВалу() КвоДорожекНаВалуКопия=КвоДорожекНаВалу; СоздатьТаблицуРасположенияДизайновНаВалу(); РасчетСделан=0; КонецПроцедуры //------------------------------------------------------------------------------------------------------------ Функция ПодборАнилокса(спАнилоксы,ИскомаяЛинеатура) Далее //------------------------------------------------------------------------------------------------------------ Процедура ЗаполнитьКраскиДизайнаИзСправочникаЗапечаткиДизайнеров(ТаблицаКрасокДизайна,ЗапечаткаОтДизайнеров) Если ПустоеЗначение(ЗапечаткаОтДизайнеров)=1 Тогда Возврат; КонецЕсли; спАнилоксы=ВернутьАнилоксы(ПечатнаяМашина); ТаблицаКрасокДизайна.УдалитьСтроки(); ЭлементыДизайна = СоздатьОбъект("Справочник.ЭлементыДизайна"); ЭлементыДизайна.ИспользоватьВладельца(ЗапечаткаОтДизайнеров); ЭлементыДизайна.ВыбратьЭлементы(); Пока ЭлементыДизайна.ПолучитьЭлемент() = 1 Цикл Если ЭлементыДизайна.ПометкаУдаления() = 1 Тогда Продолжить; КонецЕсли; Краска=ЭлементыДизайна.Краска; Анилокс=ВернутьАнилоксПоУмолчанию(ПечатнаяМашина,Краска); Если ПустоеЗначение(Анилокс)=1 Тогда Анилокс=спАнилоксы.ПолучитьЗначение(1); КонецЕсли; ПроцентЗапечатки=ЭлементыДизайна.ПроцентЗапечатки; Если ПроцентЗапечатки<=0 Тогда ПроцентЗапечатки=1; КонецЕсли; Если (ПустоеЗначение(Краска)=1) Тогда Продолжить; КонецЕсли; НомСтроки=""; ТаблицаКрасокДизайна.НоваяСтрока(); ТаблицаКрасокДизайна.Краска=Краска; ТаблицаКрасокДизайна.Анилокс=Анилокс; ЦенаКраски=глВернутьЦенуПроизводственногоМатериала(ТаблицаКрасокДизайна.Краска,ДатаДляЭкономистов,Курс); ТаблицаКрасокДизайна.Цена=ЦенаКраски; ТаблицаКрасокДизайна.ПроцентЗапечатки=ЭлементыДизайна.ПроцентЗапечатки; КонецЦикла; КонецПроцедуры //------------------------------------------------------------------------------------------------------------ Процедура ИзменитьКраскуВоВсехДизайновИзОбщейТаблицыКрасок(СтараяКраска,НоваяКраска,Анилокс) ИТСтрокиДокумента.ВНачало(); Пока ИТСтрокиДокумента.СледующаяСтрока()=1 Цикл ТаблицаКрасокДизайна=ИТСтрокиДокумента.ПолучитьЗначение(,"ТаблицаКрасок"); Если ТаблицаКрасокДизайна.НомерИндекса("инКраска")=0 Тогда ТаблицаКрасокДизайна.ДобавитьИндекс("инКраска","Краска"); КонецЕсли; НомСтр=ТаблицаКрасокДизайна.НайтиСтроку("инКраска",СтараяКраска,,1); Если НомСтр=0 Тогда ТаблицаКрасокДизайна.НоваяСтрока(); НомСтр=ТаблицаКрасокДизайна.НомерСтроки; КонецЕсли; ТаблицаКрасокДизайна.Краска=НоваяКраска; Если ТаблицаКрасокДизайна.Анилокс<>Анилокс Тогда ТаблицаКрасокДизайна.Анилокс=Анилокс; КонецЕсли; ТаблицаКрасокДизайна.Цена=НоваяКраска.Цена.Получить(ДатаДляЭкономистов); ИТСтрокиДокумента.УстановитьЗначение(ИТСтрокиДокумента.НомерСтроки,"ТаблицаКрасок",ТаблицаКрасокДизайна); КонецЦикла; КонецПроцедуры //------------------------------------------------------------------------------------------------------------ Процедура ЗаполнитьКраскиИзДизайнов() Если фПодписьТехнолога=1 Тогда Возврат; КонецЕсли; ИТСтрокиДокумента.ВНачало(); Пока ИТСтрокиДокумента.СледующаяСтрока() = 1 Цикл ЗаполнитьКраскиДизайнаИзСправочникаЗапечаткиДизайнеров(ИТСтрокиДокумента.ТаблицаКрасок,ИТСтрокиДокумента.РисунокДизайна) ; КонецЦикла; ОбновитьТаблицыДокумента(); КонецПроцедуры //------------------------------------------------------------------------------------------------------------ Функция ВернутьТаблицуКрасок(ТаблицаКрасокФормы,спВыбранДизайны) //если КакаяТаблица="Форма", то ВыбранДизайн-это список дизайнов на форме Если ТипЗначенияСтр(спВыбранДизайны)<>"СписокЗначений" Тогда Возврат 0; КонецЕсли; Если ПустоеЗначение(ТаблицаКрасокФормы)=1 Тогда ТаблицаКрасокФормы=СоздатьОбъект("ИндексированнаяТаблица"); КонецЕсли; ТаблицаКрасокФормы.Очистить(); ТаблицаКрасокФормы.НоваяКолонка("Краска"); ТаблицаКрасокФормы.НоваяКолонка("КвоИспользования"); ТаблицаКрасокФормы.НоваяКолонка("ВысотаФормы"); ТаблицаКрасокФормы.НоваяКолонка("ШиринаФормы"); ТаблицаКрасокФормы.ДобавитьИндекс("инКраска","Краска"); Если ИТСтрокиДокумента.НомерИндекса("инДизайн")=0 Тогда ИТСтрокиДокумента.ДобавитьИндекс("инДизайн","Дизайн"); КонецЕсли; Для ы=1 По спВыбранДизайны.РазмерСписка() Цикл ТекДизайн=спВыбранДизайны.ПолучитьЗначение(ы); Если ПустоеЗначение(ТекДизайн)=1 Тогда Продолжить; КонецЕсли; НомСтроки=ИТСтрокиДокумента.НайтиСтроку("инДизайн", ТекДизайн,,1); Если НомСтроки=0 Тогда Возврат 0; КонецЕсли; ТаблицаКрасокДизайна=ИТСтрокиДокумента.ТаблицаКрасок; ТекШагПечати=ИТСтрокиДокумента.ШагПечати; ТекШиринаДорожки=ИТСтрокиДокумента.ШиринаДорожки; ТаблицаКрасокДизайна=ИТСтрокиДокумента.ТаблицаКрасок; ТаблицаКрасокДизайна.ВыбратьСтроки(); Пока ТаблицаКрасокДизайна.ПолучитьСтроку()=1 Цикл Краска=ТаблицаКрасокДизайна.Краска; Если (ПустоеЗначение(Краска)=1) Тогда Продолжить; КонецЕсли; НомСтроки=""; Если ТаблицаКрасокФормы.НайтиСтроку("инКраска",Краска,,1)=0 Тогда ТаблицаКрасокФормы.НоваяСтрока(); ТаблицаКрасокФормы.Краска=Краска; ТаблицаКрасокФормы.ВысотаФормы=0; ТаблицаКрасокФормы.ШиринаФормы=0; КонецЕсли; ТаблицаКрасокФормы.ВысотаФормы=ТаблицаКрасокФормы.ВысотаФормы+ТекШагПечати; ТаблицаКрасокФормы.ШиринаФормы=ТекШиринаДорожки; КонецЦикла; КонецЦикла; Возврат 1; КонецФункции //------------------------------------------------------------------------------------------------------------ Процедура ОбновитьЦены() // ИТЗКраски = ПДИТКраски.Данные.ИндексированнаяТаблица; // ИТ=СоздатьОбъект("ИндексированнаяТаблица"); // ИТ.Загрузить(ИТЗКраски); // ИТ.ВНачало(); // Пока ИТ.ПолучитьСтроку()=1 Цикл // Краска=ИТ.Краска; // Если ПустоеЗначение(Краска)=1 Тогда // Продолжить; // КонецЕсли; // ЦенаКраски=глВернутьЦенуПроизводственногоМатериала(Краска,ДатаДляЭкономистов,Курс); // ЦенаСвязующего=ЦенаЗаКилоСвязующего(); // Цена=ЦенаКраски*(100- ИТ.ПроцентСвязующего)/100+ЦенаСвязующего* ИТ.ПроцентСвязующего/100; // ИТЗКраски.УстановитьЗначение(ИТ.НомерСтроки,"Цена",Цена); // КонецЦикла; // ОбщаяГрамматураПродукции= ОбщаяГрамматураПродукции(); КонецПроцедуры //------------------------------------------------------------------------------------------------------------ Процедура КопироватьКраски() Если фЗапечаткаТекущДизайна=1 Тогда Возврат; КонецЕсли; список=СоздатьОбъект("СписокЗначений"); ИТЗТехнолог = ПДИнТбТехнолог.Данные.ИндексированнаяТаблица; ТекСтр = ПДИнТбТехнолог.Данные.ТекущаяСтрока; Если ТекСтр>1 Тогда ТаблицаКрасокПредДизайна=ИТСтрокиДокумента.ПолучитьЗначение(ТекСтр-1,"ТаблицаКрасок"); Если ТаблицаКрасокПредДизайна.НомерИндекса("инКраска")=0 Тогда ТаблицаКрасокПредДизайна.ДобавитьИндекс("инКраска","Краска"); КонецЕсли; ТаблицаКрасокТекДизайна=ИТСтрокиДокумента.ПолучитьЗначение(ТекСтр,"ТаблицаКрасок"); Если ТаблицаКрасокТекДизайна.НомерИндекса("инКраска")=0 Тогда ТаблицаКрасокТекДизайна.ДобавитьИндекс("инКраска","Краска"); КонецЕсли; ТаблицаКрасокПредДизайна.ВыбратьСтроки(); Пока ТаблицаКрасокПредДизайна.ПолучитьСтроку()=1 Цикл Краска=ТаблицаКрасокПредДизайна.Краска; НомСтр=ТаблицаКрасокТекДизайна.НайтиСтроку("инКраска",Краска,,1); Если НомСтр=0 Тогда ТаблицаКрасокТекДизайна.НоваяСтрока(); ТаблицаКрасокТекДизайна.Краска=Краска; КонецЕсли; ТаблицаКрасокТекДизайна.ПроцентЗапечатки=ТаблицаКрасокПредДизайна.ПроцентЗапечатки; Анилокс=ТаблицаКрасокПредДизайна.Анилокс; ТаблицаКрасокТекДизайна.Анилокс=Анилокс; ТаблицаКрасокТекДизайна.Цена=ТаблицаКрасокПредДизайна.Цена; КонецЦикла; ИТСтрокиДокумента.УстановитьЗначение(ТекСтр,"ТаблицаКрасок",ТаблицаКрасокТекДизайна); РасчетСделан=0; ОбновитьТаблицыДокумента(); СохранитьПредТаблицуКрасокДизайна(); //ЗаполнитьОбщуюТаблицуКрасок(); КонецЕсли; КонецПроцедуры //------------------------------------------------------------------------------------------------------------ Функция ПодборАнилокса(спАнилоксы,ИскомаяЛинеатура) НомЗначения=0; Если ПустоеЗначение(ИскомаяЛинеатура)=0 Тогда Для НомЗначения=1 По спАнилоксы.РазмерСписка() Цикл Анилокс=спАнилоксы.ПолучитьЗначение(НомЗначения); Линеатура=Анилокс.Линеатура; Если СокрЛП(Линеатура)=СокрЛП(ИскомаяЛинеатура) Тогда Возврат Анилокс; КонецЕсли; Если Найти(Линеатура,",")<>0 Тогда Если Найти(Линеатура,СокрЛП(ИскомаяЛинеатура))<>0 Тогда Возврат Анилокс; КонецЕсли; ИначеЕсли Найти(ИскомаяЛинеатура,",")<>0 Тогда Если Найти(ИскомаяЛинеатура,СокрЛП(Линеатура))<>0 Тогда Возврат Анилокс; КонецЕсли; КонецЕсли; КонецЦикла; КонецЕсли; НомЗначения=1; Анилокс=спАнилоксы.ПолучитьЗначение(НомЗначения); Возврат Анилокс; КонецФункции //------------------------------------------------------------------------------------------------------------ Процедура ИзмПечатнаяМашина() ВыбранМашина=спПечатныеМашины.ПолучитьЗначение(спПечатныеМашины.ТекущаяСтрока()); Если (ПечатнаяМашина=ВыбранМашина) Тогда // ничего не изменилось Возврат; КонецЕсли; Если ПустоеЗначение(ВыбранМашина)=1 Тогда Сообщить("Ошибка в ИзмПечатнаяМашина"); спПечатныеМашины.ТекущаяСтрока(спПечатныеМашины.НайтиЗначение(ПечатнаяМашина)); Возврат; КонецЕсли; ПечатнаяМашина= ВыбранМашина; списокАнилоксов=ВернутьАнилоксы(ПечатнаяМашина); Данные=ПДИТКраски.Данные; Данные.УстановитьПараметрыКолонки("Анилокс","СписокЗначений",списокАнилоксов); //Меняем анилоксы в общей таблице красок и в других таблицах красок //ОбщаяТаблицаКрасок.ВыбратьСтроки(); //Пока ОбщаяТаблицаКрасок.ПолучитьСтроку()=1 Цикл // ТекКраска=ОбщаяТаблицаКрасок.Краска; // СтараяЛинеатура=""; // СтарыйАнилокс=ОбщаяТаблицаКрасок.Анилокс; // Если ПустоеЗначение(СтарыйАнилокс)=0 Тогда // СтараяЛинеатура=СтарыйАнилокс.Линеатура; // КонецЕсли; // Анилокс=ПодборАнилокса(списокАнилоксов,СтараяЛинеатура); // ОбщаяТаблицаКрасок.Анилокс=Анилокс; // ИТСтрокиДокумента.ВНачало(); // Пока ИТСтрокиДокумента.СледующаяСтрока()=1 Цикл // ТаблицаКрасокДизайна=ИТСтрокиДокумента.ТаблицаКрасок; // Если ТаблицаКрасокДизайна.НомерИндекса("инКраска")=0 Тогда // ТаблицаКрасокДизайна.ДобавитьИндекс("инКраска","Краска"); // КонецЕсли; // Если ТаблицаКрасокДизайна.НайтиСтроку("инКраска",ТекКраска,,1)<>0 Тогда // ТаблицаКрасокДизайна.Анилокс=Анилокс; // ИТСтрокиДокумента.ТаблицаКрасок=ТаблицаКрасокДизайна; // КонецЕсли; // КонецЦикла; //КонецЦикла; ОбновитьТаблицыДокумента(); РасчетСделан=0; ВспомогПроцедура(тбИсторияДокумента,"Изменения",глПользователь,"ПечатнаяМашина", "Изменена ПечатнаяМашина на "+ПечатнаяМашина.Наименование); КонецПроцедуры //------------------------------------------------------------------------------------------------------------ Процедура ИзмСырье() Если (ПустоеЗначение(ОсновнойМатериал)=0) Тогда Толщина=глПолучитьПериодическийАтрибутЭлементаСправочника(ОсновнойМатериал,"Толщина",ДатаДляЭкономистов); Если Толщина<>0 Тогда ТолщинаОсновногоМатериала=Толщина; КонецЕсли; Иначе МатериалЛаминации1=""; Формат1=0; ШиринаСырьяОсновногоМатериала=0; ТолщинаОсновногоМатериала=0; КонецЕсли; Если (ПустоеЗначение(МатериалЛаминации1)=0)Тогда Толщина=глПолучитьПериодическийАтрибутЭлементаСправочника(МатериалЛаминации1,"Толщина",ДатаДляЭкономистов); Если Толщина<>0 Тогда ТолщинаМатериалаЛаминации1=Толщина; КонецЕсли; Иначе ЦенаЗаКилоМатериалаЛаминации1=0; МатериалЛаминации2=0; Формат2=0; ШиринаСырьяМатериалаЛаминации1=0; ТолщинаМатериалаЛаминации1=0; КонецЕсли; Если ПустоеЗначение(МатериалЛаминации2)=0 Тогда Толщина=глПолучитьПериодическийАтрибутЭлементаСправочника(МатериалЛаминации2,"Толщина",ДатаДляЭкономистов); Если Толщина<>0 Тогда ТолщинаМатериалаЛаминации2=Толщина; КонецЕсли; Иначе ЦенаЗаКилоМатериалаЛаминации2=0; Формат3=0; ШиринаСырьяМатериалаЛаминации2=0; ПлотностьМатериалаЛаминации2=0; ТолщинаМатериалаЛаминации2=0; ГрамматураМатериалаЛаминации2=0; КонецЕсли; РасчетСделан=0; КонецПроцедуры //------------------------------------------------------------------------------------------------------------ Функция СоздатьТаблицуРасчетнаяМасса() ТаблицаРасчетнаяМасса=СоздатьОбъект("ТаблицаЗначений"); ТаблицаРасчетнаяМасса.НоваяКолонка("Тираж","Число",15,4); ТаблицаРасчетнаяМасса.НоваяКолонка("Масса","Число",15,4); ТаблицаРасчетнаяМасса.НоваяКолонка("НормаОсновногоМатериала","Число",10,4); ТаблицаРасчетнаяМасса.НоваяКолонка("НормаМатериалаЛаминации1","Число",10,4); ТаблицаРасчетнаяМасса.НоваяКолонка("НормаМатериалаЛаминации2","Число",10,4); ТаблицаРасчетнаяМасса.НоваяКолонка("Себистоимость","Число",19,4); ТаблицаРасчетнаяМасса.НоваяКолонка("НеРентабельно","Число",15,4); ТаблицаРасчетнаяМасса.НоваяКолонка("Прибыльно","Число",15,4); ТаблицаРасчетнаяМасса.НоваяКолонка("Премиально","Число",15,4); ТаблицаРасчетнаяМасса.НоваяКолонка("ДопНакруткаНеРентабельно","Число",15,4); ТаблицаРасчетнаяМасса.НоваяКолонка("ДопНакруткаПрибыльно","Число",15,4); ТаблицаРасчетнаяМасса.НоваяКолонка("ДопНакруткаПремиально","Число",15,4); ТаблицаРасчетнаяМасса.НоваяКолонка("Кол_квМТиража","Число",10,2); ТаблицаРасчетнаяМасса.НоваяКолонка("КолПогонМетровТиража","Число",10,2); ТаблицаРасчетнаяМасса.НоваяКолонка("СтоимостьНеРентабельно","Число",19,4); ТаблицаРасчетнаяМасса.НоваяКолонка("СтоимостьОтсрочкиНеРентабельно","Число",19,4,); ТаблицаРасчетнаяМасса.НоваяКолонка("ПродСтоимостьНеРентабельно","Число",19,4,); ТаблицаРасчетнаяМасса.НоваяКолонка("СтоимостьПрибыльно","Число",19,4); ТаблицаРасчетнаяМасса.НоваяКолонка("СтоимостьОтсрочкиПрибыльно","Число",19,4); ТаблицаРасчетнаяМасса.НоваяКолонка("ПродСтоимостьПрибыльно","Число",19,4); ТаблицаРасчетнаяМасса.НоваяКолонка("СтоимостьПремиально","Число",19,4,); ТаблицаРасчетнаяМасса.НоваяКолонка("СтоимостьОтсрочкиПремиально","Число",19,4); ТаблицаРасчетнаяМасса.НоваяКолонка("ПродСтоимостьПремиально","Число",19,4); Возврат ТаблицаРасчетнаяМасса; КонецФункции //====================================================================== Процедура ИзмРасположениеРисунковНаВалу() Если КвоДорожекНаВалу=0 Тогда Предупреждение("Не указано к-во дорожек на валу"); СтатусВозврата(0); Возврат; КонецЕсли; СоздатьТаблицуРасположенияДизайновНаВалу(); КоллекцияПараметров=СоздатьОбъект("АссоциативныйВектор"); КонтекстФормы=глВернутьКонтекст(Контекст); ТолькоПросмотр=0; ИзменятьНаправлениеТекста=1; Если Форма.ТолькоПросмотр()=1 Тогда ТолькоПросмотр=1; ИзменятьНаправлениеТекста=0; ИначеЕсли Проведен()=1 Тогда ТолькоПросмотр=1; ИзменятьНаправлениеТекста=1; ИначеЕсли фПодписьСогласованиеЦены=1 Тогда ТолькоПросмотр=1; ИзменятьНаправлениеТекста=1; ИначеЕсли фПодписьТехнолога=1 Тогда ТолькоПросмотр=1; ИзменятьНаправлениеТекста=1; ИначеЕсли (фПодписьМенеджера=1)и(НазваниеНабораПрав()="Менеджер") Тогда ТолькоПросмотр=1; ИзменятьНаправлениеТекста=1; КонецЕсли; КоллекцияПараметров.Добавить(КонтекстФормы,"КонтекстФормы"); КоллекцияПараметров.Добавить(ТолькоПросмотр,"ТолькоПросмотр"); КоллекцияПараметров.Добавить(ИзменятьНаправлениеТекста,"ИзменятьНаправлениеТекста"); ОткрытьФормуМодально("Обработка.РасположениеРисунковНаВалу",КоллекцияПараметров); й=1; Если фНеобходимоПересчет=1 Тогда ПодборРазвертки(); ПодборРезиновогоВала(); ИзмФорматСырья("ОсновнойМатериал"); ИзмФорматСырья("МатериалЛаминации1"); ИзмФорматСырья("МатериалЛаминации2"); //ЗаполнитьОбщуюТаблицуКрасок(); ОбновитьТаблицыДокумента(); фНеобходимоПересчет=0; фРасположилиРисункиНаВалу=1; КонтекстФормы=глВернутьКонтекст(Контекст); Если ОбщаяРасчетнаяТаблица.КоличествоСтрок()>0 Тогда МассаДляПереклейки=ОбщаяРасчетнаяТаблица.ПолучитьЗначение(1,"Масса"); ТиражДляПереклейки=ОбщаяРасчетнаяТаблица.ПолучитьЗначение(1,"Тираж"); Иначе МассаДляПереклейки=0; ТиражДляПереклейки=0; КонецЕсли; НормыРасчета.МассаДляПереклейки=МассаДляПереклейки; НормыРасчета.ТиражДляПереклейки=ТиражДляПереклейки; НормыРасчета.УстановитьДокумент(КонтекстФормы); НормыРасчета.РасчитатьВесТысячи(); ОбновитьТаблицыДокумента(); КонецЕсли; КонецПроцедуры //------------------------------------------------------------------------------------------------------------ Процедура ОчиститьСырье(КакойМатериал) Если КакойМатериал="ОсновнойМатериал"Тогда ОсновнойМатериал="";//ШиринаСырьяОсновногоМатериала=0; ИначеЕсли КакойМатериал="МатериалЛаминации1"Тогда МатериалЛаминации1="";//ШиринаСырьяМатериалаЛаминации1=0; ИначеЕсли КакойМатериал="МатериалЛаминации2"Тогда МатериалЛаминации2="";//ШиринаСырьяМатериалаЛаминации2=0;ГрамматураМатериалаЛаминации2=0; КонецЕсли; ИзмСырье(); КонецПроцедуры //------------------------------------------------------------------------------------------------------------ //Процедура ИзмРазвертка() // Если Проведен()=1 Тогда // ТекСтрока=спРазверток.НайтиЗначение(Развертка); // Если ТекСтрока=0 Тогда // ТекСтрока=1; // КонецЕсли; // спРазверток.ТекущаяСтрока(ТекСтрока); // Предупреждение("Нельзя изменять в поведенном документе!"); // Возврат; // КонецЕсли; // // // НомерВыбранРазвертки=спРазверток.ТекущаяСтрока(); // Развертка=спРазверток.ПолучитьЗначение(НомерВыбранРазвертки); // РасчетСделан=0; // ВспомогПроцедура(тбИсторияДокумента,"Изменения",глПользователь,"Развертка", // "Изменена Развертка на "+Развертка); //КонецПроцедуры //------------------------------------------------------------------------------------------------------------ Процедура ИзмШиринаРезиновогоВала() Если Проведен()=1 Тогда ТекСтрока=спШиринаРезиновогоВала.НайтиЗначение(ШиринаРезиновогоВала); Если ТекСтрока=0 Тогда ТекСтрока=1; КонецЕсли; спШиринаРезиновогоВала.ТекущаяСтрока(ТекСтрока); Предупреждение("Нельзя изменять в поведенном документе!"); Возврат; КонецЕсли; НомерШиринаРезиновогоВала=спШиринаРезиновогоВала.НайтиЗначение(ШиринаРезиновогоВала); ОбщаяШиринаВсехДизайновВОдномШагеПечати=НормыРасчета.ОбщаяШиринаВсехДизайновВОдномШагеПечати(); Размер=ОбщаяШиринаВсехДизайновВОдномШагеПечати; НовыйНомерШиринаРезиновогоВала=спШиринаРезиновогоВала.ТекущаяСтрока(); НовыйШиринаРезиновогоВала=спШиринаРезиновогоВала.ПолучитьЗначение(НовыйНомерШиринаРезиновогоВала); Если (фПечать=0)И(фПакетоделание=0)И(фБабинорезка=0) И (фЛаминация=1)Тогда //только одна ламинация ВалМеньшеШириныПродукции=1; НасколькоВалБольшеШириныДорожек=0; Иначе ВалМеньшеШириныПродукции=0; НасколькоВалБольшеШириныДорожек=НормыРасчета.НормаТехОтходовПроцесса("Справочник","НасколькоВалБольшеШириныДорожек"); КонецЕсли; Если (НовыйШиринаРезиновогоВала<(Размер+НасколькоВалБольшеШириныДорожек)) И(ВалМеньшеШириныПродукции=0)Тогда спШиринаРезиновогоВала.ТекущаяСтрока(НомерШиринаРезиновогоВала); Возврат; КонецЕсли; ШиринаРезиновогоВала=спШиринаРезиновогоВала.ПолучитьЗначение(НовыйНомерШиринаРезиновогоВала); спШиринаВала2.ТекущаяСтрока(спШиринаВала2.НайтиЗначение(ШиринаРезиновогоВала)); РасчетСделан=0; ВспомогПроцедура(тбИсторияДокумента,"Изменения",глПользователь,"ШиринаРезиновогоВала", "Изменена ШиринаРезиновогоВала на "+ШиринаРезиновогоВала); ИзмШиринаСуществующегоСырья("ОсновнойМатериал"); ИзмШиринаСуществующегоСырья("МатериалЛаминации1"); ИзмШиринаСуществующегоСырья("МатериалЛаминации2"); КонтекстФормы=глВернутьКонтекст(Контекст); Если ОбщаяРасчетнаяТаблица.КоличествоСтрок()>0 Тогда МассаДляПереклейки=ОбщаяРасчетнаяТаблица.ПолучитьЗначение(1,"Масса"); ТиражДляПереклейки=ОбщаяРасчетнаяТаблица.ПолучитьЗначение(1,"Тираж"); Иначе МассаДляПереклейки=0; ТиражДляПереклейки=0; КонецЕсли; РасчетСделан=0; НормыРасчета.МассаДляПереклейки=МассаДляПереклейки; НормыРасчета.ТиражДляПереклейки=ТиражДляПереклейки; НормыРасчета.УстановитьДокумент(КонтекстФормы); НормыРасчета.РасчитатьВесТысячи(); КонецПроцедуры //------------------------------------------------------------------------------------------------------------ Процедура ИзмШиринаВала2() Если Проведен()=1 Тогда ТекСтрока=спШиринаВала2.НайтиЗначение(ШиринаРезиновогоВала); Если ТекСтрока=0 Тогда ТекСтрока=1; КонецЕсли; спШиринаВала2.ТекущаяСтрока(ТекСтрока); Предупреждение("Нельзя изменять в поведенном документе!"); Возврат; КонецЕсли; НомерШиринаРезиновогоВала=спШиринаВала2.НайтиЗначение(ШиринаРезиновогоВала); Размер=НормыРасчета.ОбщаяШиринаВсехДизайновВОдномШагеПечати(); НовыйНомерШиринаРезиновогоВала=спШиринаВала2.ТекущаяСтрока(); НовыйШиринаРезиновогоВала=спШиринаВала2.ПолучитьЗначение(НовыйНомерШиринаРезиновогоВала); Если (фПечать=0)И(фПакетоделание=0)И(фБабинорезка=0) И (фЛаминация=1)Тогда //только одна ламинация ВалМеньшеШириныПродукции=1; Иначе ВалМеньшеШириныПродукции=0; КонецЕсли; Если (НовыйШиринаРезиновогоВала<Размер) И(ВалМеньшеШириныПродукции=0)Тогда спШиринаВала2.ТекущаяСтрока(НомерШиринаРезиновогоВала); Возврат; КонецЕсли; ШиринаРезиновогоВала=спШиринаВала2.ПолучитьЗначение(НовыйНомерШиринаРезиновогоВала); спШиринаРезиновогоВала.ТекущаяСтрока(спШиринаРезиновогоВала.НайтиЗначение(ШиринаРезиновогоВала)); РасчетСделан=0; ВспомогПроцедура(тбИсторияДокумента,"Изменения",глПользователь,"ШиринаРезиновогоВала", "Изменена ШиринаРезиновогоВала на "+ШиринаРезиновогоВала); ИзмШиринаСуществующегоСырья("ОсновнойМатериал"); ИзмШиринаСуществующегоСырья("МатериалЛаминации1"); ИзмШиринаСуществующегоСырья("МатериалЛаминации2"); КонтекстФормы=глВернутьКонтекст(Контекст); Если ОбщаяРасчетнаяТаблица.КоличествоСтрок()>0 Тогда МассаДляПереклейки=ОбщаяРасчетнаяТаблица.ПолучитьЗначение(1,"Масса"); ТиражДляПереклейки=ОбщаяРасчетнаяТаблица.ПолучитьЗначение(1,"Тираж"); Иначе МассаДляПереклейки=0; ТиражДляПереклейки=0; КонецЕсли; РасчетСделан=0; НормыРасчета.МассаДляПереклейки=МассаДляПереклейки; НормыРасчета.ТиражДляПереклейки=ТиражДляПереклейки; НормыРасчета.УстановитьДокумент(КонтекстФормы); НормыРасчета.РасчитатьВесТысячи(); КонецПроцедуры //------------------------------------------------------------------------------------------------------------ Процедура ИзмДоставка() ЧьяДоставка=спДоставка.ПолучитьЗначение(спДоставка.ТекущаяСтрока()); Если ЧьяДоставка<>1 Тогда Форма.ВыборДоставки.Доступность(0); ВыборДоставки=""; Иначе Форма.ВыборДоставки.Доступность(1); КонецЕсли; РасчетСделан=0; ВспомогПроцедура(тбИсторияДокумента,"Изменения",глПользователь,"спДоставка", "Изменена ЧьяДоставка на "+(?(ЧьяДоставка<>1,"Заказчика","Наша"))); КонецПроцедуры //------------------------------------------------------------------------------------------------------------ Процедура ИзмВидПленки() Если Проведен()=1 Тогда ТекСтрока=спВидыПленки.НайтиЗначение(ВидПленки); Если ТекСтрока=0 Тогда ТекСтрока=1; КонецЕсли; спВидыПленки.ТекущаяСтрока(ТекСтрока); Предупреждение("Нельзя изменять Вид Пленки в поведенном документе!"); Возврат; КонецЕсли; стрВидПленки=""; ВидПленки=спВидыПленки.ПолучитьЗначение(спВидыПленки.ТекущаяСтрока(),стрВидПленки); РасчетСделан=0; ВспомогПроцедура(тбИсторияДокумента,"Изменения",глПользователь,"спВидыПленки", "Изменен ВидПленки на "+стрВидПленки); КонецПроцедуры //------------------------------------------------------------------------------------------------------------ Процедура СоздатьСписокВидовПленки(Очистить=0) Если НашаФирма=КоллекцияНашихФирм.Никатор Тогда Полотно=Перечисление.ВидыПленки.ПолотноДляПакетов; ПредставлениеПолотно=Метаданные.Перечисление("ВидыПленки").Значение("ПолотноДляПакетов").Представление; Рукав=Перечисление.ВидыПленки.РукавДляПакетов; ПредставлениеРукав=Метаданные.Перечисление("ВидыПленки").Значение("РукавДляПакетов").Представление; ПолуРукав=Перечисление.ВидыПленки.ПолуРукавДляПакетов; ПредставлениеПолуРукав=Метаданные.Перечисление("ВидыПленки").Значение("ПолуРукавДляПакетов").Представление; Иначе Полотно=Перечисление.ВидыПленки.ПолотноДляПленки; ПредставлениеПолотно=Метаданные.Перечисление("ВидыПленки").Значение("ПолотноДляПленки").Представление; Рукав=Перечисление.ВидыПленки.РукавДляПакетов; ПредставлениеРукав=Метаданные.Перечисление("ВидыПленки").Значение("РукавДляПакетов").Представление; ПолуРукав=Перечисление.ВидыПленки.ПолуРукавДляПакетов; ПредставлениеПолуРукав=Метаданные.Перечисление("ВидыПленки").Значение("ПолуРукавДляПакетов").Представление; КонецЕсли; спВидыПленки.УдалитьВсе(); спВидыПленки.ДобавитьЗначение(Полотно,ПредставлениеПолотно); спВидыПленки.ДобавитьЗначение(Рукав,ПредставлениеРукав); спВидыПленки.ДобавитьЗначение(ПолуРукав,ПредставлениеПолуРукав); Если Очистить=1 Тогда ВидПленки=Полотно; КонецЕсли; ТекСтр=спВидыПленки.НайтиЗначение(ВидПленки); Если ТекСтр=0 Тогда ТекСтр=1; ВидПленки=Полотно; ТекСтр=спВидыПленки.НайтиЗначение(ВидПленки); КонецЕсли; спВидыПленки.ТекущаяСтрока(ТекСтр); КонецПроцедуры //------------------------------------------------------------------------------------------------------------ Процедура ИзмПрефиксЗаказов() Для ы=1 По тбКонтрагенты.КоличествоСтрок() Цикл Если ПустоеЗначение(тбКонтрагенты.ПолучитьЗначение(ы,"ЗаказВакиля"))=1 Тогда Продолжить; КонецЕсли; ТекЗаказ=СоздатьОбъект("Документ"); ТекЗаказ.НайтиДокумент(тбКонтрагенты.ПолучитьЗначение(ы,"ЗаказВакиля")); глУстановитьНомер(ТекЗаказ,1,0,Фирма); ТекЗаказ.Записать(); КонецЦикла; Заказ=тбКонтрагенты.ПолучитьЗначение(ТекСтрокатбКонтрагенты,"ЗаказВакиля"); ЗаписатьДокумент(); КонецПроцедуры //------------------------------------------------------------------------------------------------------------ Процедура ИзмФирмаОтгрузки() СтараяФирма=Фирма; Фирма= СписокФирм.ПолучитьЗначение(СписокФирм.ТекущаяСтрока()); Если (СтараяФирма<>Фирма) Тогда Если(Выбран()=1) Тогда ИзмПрефиксЗаказов(); Иначе глУстановитьНомер(Контекст,1); КонецЕсли; КонецЕсли; КонецПроцедуры //------------------------------------------------------------------------------------------------------------ Процедура ИзмПодразделение() Если Проведен()=1 Тогда ТекСтрока=спНашиФирмы.НайтиЗначение(НашаФирма); Если ТекСтрока=0 Тогда ТекСтрока=1; КонецЕсли; спНашиФирмы.ТекущаяСтрока(ТекСтрока); Предупреждение("Нельзя изменять Подразделение в поведенном документе!"); Возврат; КонецЕсли; ИТЗТехнолог=ПДИнТбТехнолог.Данные.ИндексированнаяТаблица; НовНашаФирма=спНашиФирмы.ПолучитьЗначение(спНашиФирмы.ТекущаяСтрока()); Если ПустоеЗначение(НовНашаФирма)=1 Тогда Если ПустоеЗначение(НашаФирма)=1 Тогда НашаФирма=КоллекцияНашихФирм.ОЗУМ; КонецЕсли; спНашиФирмы.ТекущаяСтрока(спНашиФирмы.НайтиЗначение(НашаФирма)); Возврат; КонецЕсли; Если НашаФирма<>НовНашаФирма Тогда а=КоличествоСтрок(); б=ОбщаяРасчетнаяТаблица.КоличествоСтрок(); в=тбПроцессы.КоличествоСтрок(); г=тбБракИЗатраты.КоличествоСтрок(); д=тбЗатратыКрасок.КоличествоСтрок(); е=КоличествоСтрок(); //ж=тбОтсрочка.КоличествоСтрок(); Если (а+б+в+г+д+е)<>0 Тогда Если Вопрос("Все данные будут очищены.Продолжить?",4)=7 Тогда // при Нет спНашиФирмы.ТекущаяСтрока(спНашиФирмы.НайтиЗначение(НашаФирма)); СтатусВозврата(0); Возврат; Иначе УдалитьСтроки(); фРасположилиРисункиНаВалу=0; фПодобралиРазвертки=0; ОбщаяРасчетнаяТаблица.УдалитьСтроки(); тбОбщая.УдалитьСтроки(); тбПроцессы.УдалитьСтроки(); тбБракИЗатраты.УдалитьСтроки(); тбЗатратыКрасок.УдалитьСтроки(); //тбОтсрочка.УдалитьСтроки(); ТекущаяТаблица.Загрузить(тбОбщая); спИстория.УдалитьВсе(); спИстория.ДобавитьЗначение(тбОбщая,"Общая"); ТекПозицияВИстории=1; Очистить=1; СоздатьСписокВидовПленки(Очистить); ОсновнойМатериал=""; Формат1=0; ШиринаСырьяОсновногоМатериала=0; ТолщинаОсновногоМатериала=0; ЗамесМатериалаПечати=""; МатериалЛаминации1=""; Формат2=0; ШиринаСырьяМатериалаЛаминации1=0; ТолщинаМатериалаЛаминации1=0; ЗамесМатериалаЛаминации1=""; МатериалЛаминации2=""; Формат3=0; ШиринаСырьяМатериалаЛаминации2=0; ПлотностьМатериалаЛаминации2=0; ТолщинаМатериалаЛаминации2=0; ГрамматураМатериалаЛаминации2=0; ЗамесМатериалаЛаминации2=""; КонецЕсли; КонецЕсли; НашаФирма=НовНашаФирма; ИзмСырье(); КонецЕсли; ОбновитьТаблицыДокумента(); стр=0; Если НашаФирма=КоллекцияНашихФирм.Никатор Тогда стр=СписокФирм.НайтиЗначение(Константа.ФирмаСторонняя); Иначе стр=СписокФирм.НайтиЗначение(Константа.ФирмаПродавец); КонецЕсли; Если стр=0 Тогда стр=СписокФирм.НайтиЗначение(Фирма); Иначе СписокФирм.ТекущаяСтрока(стр); КонецЕсли; Фирма= СписокФирм.ПолучитьЗначение(стр); Если(Выбран()=0) Тогда глУстановитьНомер(Контекст,1); КонецЕсли; КонецПроцедуры //------------------------------------------------------------------------------------------------------------ Процедура ИзмПроцессы(ТаблицаПроцессы,Действие) Если Действие=0 Тогда Возврат; КонецЕсли; ТекСтр=ТаблицаПроцессы.ТекущаяСтрока(); ТекКол=ТаблицаПроцессы.ТекущаяКолонка(); Процесс=ТаблицаПроцессы.ПолучитьЗначение(ТекСтр,1); //Первая колонка - "Процесс" ПрЧисло=0; Если Процесс = "Стоимость разбивки" Тогда ИначеЕсли Процесс = "% тех.Отходов на разбивку" Тогда ИначеЕсли Процесс = "% тех.Отходов на бабинорезку" Тогда ИначеЕсли Процесс = "Печатная форма" Тогда ИначеЕсли Процесс = "Демпфер" Тогда ИначеЕсли Процесс = "Растворитель" Тогда ИначеЕсли Процесс = "Растворитель для смывки секций" Тогда //Если ТекКол = "Цена" Тогда // ПрЧисло=ТаблицаПроцессы.ПолучитьЗначение(ТекСтр,ТекКол); // ЦенаРастворителя=ЦенаЗаКилоРастворителя(); // Список=СоздатьОбъект("СписокЗначений"); // Список.ДобавитьЗначение(1,"Первичка"); // Список.ДобавитьЗначение(1/2,"Вторичка"); // Список.ДобавитьЗначение(0,"Без спирта"); // Позиция=""; // Если Список.ВыбратьЗначение(ПрЧисло,"Стоимость Растворителя для смывки секций, грн/кг",Позиция,,2)=1 Тогда // ЭкономКоэфРастворителяДляСмывкиСекций=ПрЧисло; // ТаблицаПроцессы.УстановитьЗначение(ТекСтр,ТекКол,(ЦенаЗаКилоРастворителя()*ЭкономКоэфРастворителяДляСмывкиСекций)); // Норма=ТаблицаПроцессы.ПолучитьЗначение(ТекСтр,"Норма"); // ТаблицаПроцессы.УстановитьЗначение(ТекСтр,"Сумма",Окр(Норма*(ЦенаЗаКилоРастворителя()*ЭкономКоэфРастворителяДляСмывкиСекций),4,1)); // РасчетСделан=0; // КонецЕсли; //КонецЕсли; ИначеЕсли Процесс = "Связующее" Тогда ИначеЕсли Процесс = "Замедлитель" Тогда ИначеЕсли Процесс = "Ускоритель" Тогда ИначеЕсли Процесс = "Адгезийная добавка" Тогда ИначеЕсли Процесс = "Клей" Тогда ИначеЕсли Процесс = "Дополнительная порезка" Тогда Если ТекКол = "Цена" Тогда //ПрЧисло=ТаблицаПроцессы.ПолучитьЗначение(ТекСтр,ТекКол); //Список=СоздатьОбъект("СписокЗначений"); //Список.ДобавитьЗначение(Перечисление.ДаНет.Да,"Есть доп.порезка"); //Список.ДобавитьЗначение(Перечисление.ДаНет.Нет,"Нет доп.порезки"); //Выбор=Перечисление.ДаНет.Да; //Позиция=""; //Если Список.ВыбратьЗначение(Выбор,"Есть ли дополнительная порезка",Позиция,,2)=1 Тогда // ЕстьДополнительнаяПорезка=Выбор; // Если ЕстьДополнительнаяПорезка= Перечисление.ДаНет.Нет Тогда // ПрЧисло=0; // Иначе // ЦенаДополнительнойПорезки=НормыРасчета.ВернутьЦенуИзСправочникаЦенРасчета("ЦенаДополнительнойПорезки"); // ПрЧисло=ЦенаДополнительнойПорезки*КурсВалютыНакладныхЗатрат; // КонецЕсли; // ТаблицаПроцессы.УстановитьЗначение(ТекСтр,ТекКол,ПрЧисло); // Норма=ТаблицаПроцессы.ПолучитьЗначение(ТекСтр,"Норма"); // ДополнительнаяПорезка=ДополнительнаяПорезка(ОбьемДляЭкономистов); // ТаблицаПроцессы.УстановитьЗначение(ТекСтр,"Сумма",Окр(ДополнительнаяПорезка,4,1)); // РасчетСделан=0; //КонецЕсли; КонецЕсли; КонецЕсли; Форма.Обновить(0); КонецПроцедуры //------------------------------------------------------------------------------------------------------------ Процедура ИзмТекущаяТаблица(ТекущаяТаблица,Действие) //1- выбор, 2- назад по истории к предыдущей тб, 3 - вперед по истории Если Действие=0 Тогда Возврат; КонецЕсли; Если Действие=2 Тогда Если ТекПозицияВИстории=1 Тогда Возврат; КонецЕсли; ТекПозицияВИстории=ТекПозицияВИстории-1; ТекущаяТаблица.Загрузить(спИстория.ПолучитьЗначение(ТекПозицияВИстории)); Возврат; КонецЕсли; Если Действие=3 Тогда Если спИстория.РазмерСписка()<=ТекПозицияВИстории Тогда Возврат; КонецЕсли; ТекПозицияВИстории=ТекПозицияВИстории+1; ТекущаяТаблица.Загрузить(спИстория.ПолучитьЗначение(ТекПозицияВИстории)); Возврат; КонецЕсли; Если Действие=1 Тогда ТекСтр=ТекущаяТаблица.ТекущаяСтрока(); ТекКол=ТекущаяТаблица.ТекущаяКолонка(); Если (ТекСтр=0) Тогда Возврат; КонецЕсли; Если (Проведен()=0)И(Форма.ТолькоПросмотр()=0) И(фПодписьСогласованиеЦены=0)И(фПодписьЭкономиста=0) Тогда ЗначПервойКолонки=СокрЛП(ТекущаяТаблица.ПолучитьЗначение(ТекСтр,1)); Если ЗначПервойКолонки="Дополнительные затраты(на 1 кг.)" Тогда Выбор=ДополнительныеЗатратыНаКг; Если ВвестиЧисло(Выбор,"Новое значение",19,2,60)=1 Тогда ДополнительныеЗатратыНаКг=Выбор; СуммаДопЗатрат=ДополнительныеЗатратыНаКг*ОбьемДляЭкономистов; ТекущаяТаблица.УстановитьЗначение(ТекСтр,2,Выбор); ТекущаяТаблица.УстановитьЗначение(ТекСтр,3,СуммаДопЗатрат); РасчетСделан=0; Иначе Возврат; КонецЕсли; ИначеЕсли ЗначПервойКолонки="Общие дополнительные затраты" Тогда Выбор=ОбщДополнительныеЗатраты; Если ВвестиЧисло(Выбор,"Новое значение",19,2,60)=1 Тогда ОбщДополнительныеЗатраты=Выбор; ТекущаяТаблица.УстановитьЗначение(ТекСтр,2,Выбор); ТекущаяТаблица.УстановитьЗначение(ТекСтр,3,Выбор); РасчетСделан=0; Иначе Возврат; КонецЕсли; КонецЕсли; КонецЕсли; //Если последная колонка "ВложеннаяТаблица" значит пробуем получить вложенную таблицу //если ВложеннаяТаблица->не ПустоеЗначение, то загружаем ее, а старое значение в спИстория КоличествоКолонок=ТекущаяТаблица.КоличествоКолонок(); Если ТекущаяТаблица.ПолучитьПараметрыКолонки(КоличествоКолонок)="ВложеннаяТаблица" Тогда ВложеннаяТаблица=ТекущаяТаблица.ПолучитьЗначение(ТекСтр,"ВложеннаяТаблица"); Если ПустоеЗначение(ВложеннаяТаблица)=0 Тогда Если ВложеннаяТаблица="Процессы" Тогда Таблица=тбПроцессы; ИначеЕсли ВложеннаяТаблица="НакладныеЗатраты" Тогда Таблица=тбНакладныеЗатраты; ИначеЕсли ВложеннаяТаблица="ЗатратыКрасок" Тогда Таблица=тбЗатратыКрасок; ИначеЕсли ВложеннаяТаблица="БракИЗатраты" Тогда Таблица=тбБракИЗатраты; ИначеЕсли ВложеннаяТаблица="Стоимость" Тогда Таблица=тбСтоимость; ИначеЕсли ВложеннаяТаблица="СтоимостьБезКлише" Тогда Таблица=тбСтоимостьБезКлише; //ИначеЕсли ВложеннаяТаблица="Отсрочка" Тогда // Таблица=тбОтсрочка; Иначе Возврат; КонецЕсли; ТекущаяТаблица.Загрузить(Таблица); Если спИстория.РазмерСписка()>ТекПозицияВИстории Тогда спИстория.УдалитьЗначение(ТекПозицияВИстории+1,спИстория.РазмерСписка()-ТекПозицияВИстории); КонецЕсли; ТекПозицияВИстории=ТекПозицияВИстории+1; спИстория.ДобавитьЗначение(Таблица,ВложеннаяТаблица); Возврат; КонецЕсли; КонецЕсли; Если КоличествоКолонок=4 Тогда Если (ТекущаяТаблица.ПолучитьПараметрыКолонки(1)="Наименование")И(ТекущаяТаблица.ПолучитьПараметрыКолонки(2)="Норма") И(ТекущаяТаблица.ПолучитьПараметрыКолонки(3)="Сумма") Тогда Наименование=ТекущаяТаблица.ПолучитьЗначение(ТекСтр,1); //Первая колонка - "Наименование" Если Наименование = "Транспортные затраты" Тогда КонецЕсли; КонецЕсли; КонецЕсли; Если ТекущаяТаблица.ПолучитьПараметрыКолонки(1)="Процесс" Тогда ИзмПроцессы(ТекущаяТаблица,Действие); КонецЕсли; КонецЕсли; КонецПроцедуры //------------------------------------------------------------------------------------------------------------ Процедура ПодборРезиновогоВала() Если (фЛаминация=0)Тогда Возврат; КонецЕсли; КонтекстФормы=глВернутьКонтекст(Контекст); ОбщаяШиринаВсехДизайновВОдномШагеПечати=НормыРасчета.ОбщаяШиринаВсехДизайновВОдномШагеПечати(); Размер=ОбщаяШиринаВсехДизайновВОдномШагеПечати; Нашли=0; Если (фПечать=0) Тогда //ламинация без печати НасколькоВалБольшеШириныДорожек=НормыРасчета.НормаТехОтходовПроцесса("Справочник","НасколькоВалБольшеШириныДорожекБезПечати"); Иначе НасколькоВалБольшеШириныДорожек=НормыРасчета.НормаТехОтходовПроцесса("Справочник","НасколькоВалБольшеШириныДорожек"); КонецЕсли; //найдем нужную ширину вала и подставим РазмерСписка= спШиринаРезиновогоВала.РазмерСписка() ; Для НомСтроки=1 По РазмерСписка Цикл ШиринаРезВала=спШиринаРезиновогоВала.ПолучитьЗначение(НомСтроки); Если ШиринаРезВала >= (Размер+НасколькоВалБольшеШириныДорожек) Тогда Нашли=1; Прервать; КонецЕсли; КонецЦикла; Если Нашли=1 Тогда спШиринаРезиновогоВала.ТекущаяСтрока(НомСтроки); ШиринаРезиновогоВала=спШиринаРезиновогоВала.ПолучитьЗначение(НомСтроки); спШиринаВала2.ТекущаяСтрока(спШиринаВала2.НайтиЗначение(ШиринаРезиновогоВала)); Иначе Предупреждение("Не могу подобрать вал для ламинации!"+РазделительСтрок+"Слишком широкое сырье."); КонецЕсли; КонецПроцедуры //------------------------------------------------------------------------------------------------------------ Процедура ПодборРазвертки() Если (фПечать=0)ИЛИ(КоличествоСтрок()=0) Тогда Возврат; КонецЕсли; спРазверток=СоздатьОбъект("СписокЗначений"); спр=СоздатьОбъект("Справочник.Развертки"); спр.ИспользоватьДату(ДатаДляЭкономистов,1); спр.ПорядокКодов(); спр.ВыбратьЭлементы(); Пока спр.ПолучитьЭлемент()=1 Цикл Если спр.ПометкаУдаления()=1 Тогда Продолжить; КонецЕсли; спРазверток.ДобавитьЗначение(спр.Развертка,""+спр.Развертка); КонецЦикла; НайденнаяРазвертка=0; //проверим все ли дизайны размещены Если ВсеЛиДизайныРазмещены()=1 Тогда Результат=ВернутьШагПечати(0); Если Результат<>0 Тогда ПодобраннаяРазвертка=0; Для ы=1 По спРазверток.РазмерСписка() Цикл ВозможнаяРазвертка=спРазверток.ПолучитьЗначение(ы); Если ШиринаСырьяОсновногоМатериала>840 Тогда Если ВозможнаяРазвертка<=340 Тогда Продолжить; КонецЕсли; КонецЕсли; Если Сравнение(ВозможнаяРазвертка,Результат)=1 Тогда ПодобраннаяРазвертка= ВозможнаяРазвертка; Прервать; Иначе Продолжить; КонецЕсли; КонецЦикла; НайденнаяРазвертка=ПодобраннаяРазвертка; КонецЕсли; КонецЕсли; Если НайденнаяРазвертка<>0 Тогда Развертка=НайденнаяРазвертка; спРазверток.ТекущаяСтрока(спРазверток.НайтиЗначение(Развертка)); ВыбратьСтроки(); Пока ПолучитьСтроку()=1 Цикл РазверткаДизайна=Развертка; КонецЦикла; фПодобралиРазвертки=1; Иначе ВыбратьСтроки(); Пока ПолучитьСтроку()=1 Цикл РазверткаДизайна=0; КонецЦикла; Развертка=0; фПодобралиРазвертки=0; КонецЕсли; ОбновитьТаблицыДокумента(); КонецПроцедуры //------------------------------------------------------------------------------------------------------------ Функция ЖелательнаяШиринаСырья(КакойМатериал) ЖелательнаяШиринаСырья=0; ОбщаяШиринаВсехДизайновВОдномШагеПечати=НормыРасчета.ОбщаяШиринаВсехДизайновВОдномШагеПечати(); ОбязятельнаяКромка=ВернутьОбязятельнуюКромку(); Размер=ОбщаяШиринаВсехДизайновВОдномШагеПечати+ОбязятельнаяКромка; Если Размер=0 Тогда Возврат ЖелательнаяШиринаСырья; КонецЕсли; Если (фЭкструзия=0)И(фПечать=0)И(фЛаминация=0)И(фБабинорезка=0) И(фПакетоделание=0) Тогда ЖелательнаяШиринаСырья= 0; ИначеЕсли (фЭкструзия=1)И(фПечать=0)И(фЛаминация=0)И(фБабинорезка=0) Тогда ЖелательнаяШиринаСырья= Размер; ИначеЕсли (фЭкструзия=1)И(фПечать=1)И(фЛаминация=0) Тогда ЖелательнаяШиринаСырья= Размер; ИначеЕсли (фЭкструзия=0)И(фПечать=1)И(фЛаминация=0) Тогда Если КакойМатериал="ОсновнойМатериал" Тогда Если ПустоеЗначение(ОсновнойМатериал)=1 Тогда ЖелательнаяШиринаСырья= 0; Иначе ЖелательнаяКромка=глПолучитьПериодическийАтрибутЭлементаСправочника(ОсновнойМатериал,"ЖелательнаяКромкаПриПечати",ДатаДляЭкономистов); ЖелательнаяШиринаСырья= Размер+ЖелательнаяКромка; КонецЕсли; ИначеЕсли КакойМатериал="МатериалЛаминации1" Тогда ЖелательнаяШиринаСырья= 0; ИначеЕсли КакойМатериал="МатериалЛаминации2" Тогда ЖелательнаяШиринаСырья= 0; КонецЕсли; ИначеЕсли фЛаминация=1 Тогда Если КакойМатериал="ОсновнойМатериал" Тогда Если ПустоеЗначение(ОсновнойМатериал)=1 Тогда ЖелательнаяШиринаСырья= 0; Иначе ЖелательнаяКромка=глПолучитьПериодическийАтрибутЭлементаСправочника(ОсновнойМатериал,"ЖелательнаяКромкаПриЛаминации",ДатаДляЭкономистов); ЖелательнаяШиринаСырья= ШиринаРезиновогоВала+ЖелательнаяКромка; КонецЕсли; ИначеЕсли КакойМатериал="МатериалЛаминации1" Тогда Если ПустоеЗначение(МатериалЛаминации1)=1 Тогда ЖелательнаяШиринаСырья= 0; Иначе ЖелательнаяКромка=глПолучитьПериодическийАтрибутЭлементаСправочника(МатериалЛаминации1,"ЖелательнаяКромкаПриЛаминации",ДатаДляЭкономистов); ЖелательнаяШиринаСырья= ШиринаРезиновогоВала+ЖелательнаяКромка; КонецЕсли; ИначеЕсли КакойМатериал="МатериалЛаминации2" Тогда Если ПустоеЗначение(МатериалЛаминации2)=1 Тогда ЖелательнаяШиринаСырья= 0; Иначе ЖелательнаяКромка=глПолучитьПериодическийАтрибутЭлементаСправочника(МатериалЛаминации2,"ЖелательнаяКромкаПриЛаминации",ДатаДляЭкономистов); ЖелательнаяШиринаСырья= ШиринаРезиновогоВала+ЖелательнаяКромка; КонецЕсли; КонецЕсли; ИначеЕсли фПакетоделание=1 Тогда ЖелательнаяШиринаСырья= Размер; ИначеЕсли (фБабинорезка=1) Тогда ЖелательнаяШиринаСырья= Размер; КонецЕсли; Возврат ЖелательнаяШиринаСырья; КонецФункции //------------------------------------------------------------------------------------------------------------ Функция НеобходимаяШиринаСырья(КакойМатериал) НеобходимаяШиринаСырья=0; ОбщаяШиринаВсехДизайновВОдномШагеПечати=НормыРасчета.ОбщаяШиринаВсехДизайновВОдномШагеПечати(); ОбязятельнаяКромка=ВернутьОбязятельнуюКромку(); Размер=ОбщаяШиринаВсехДизайновВОдномШагеПечати+ОбязятельнаяКромка; Если Размер=0 Тогда Возврат НеобходимаяШиринаСырья; КонецЕсли; Если (фЭкструзия=0)И(фПечать=0)И(фЛаминация=0)И(фБабинорезка=0) И(фПакетоделание=0) Тогда НеобходимаяШиринаСырья= 0; ИначеЕсли (фЭкструзия=1)И(фПечать=0)И(фЛаминация=0)И(фБабинорезка=0) Тогда НеобходимаяШиринаСырья= Размер; Иначе Если (фПечать=1)И(фЛаминация=0) Тогда Если КакойМатериал="ОсновнойМатериал" Тогда Если ПустоеЗначение(ОсновнойМатериал)=1 Тогда НеобходимаяШиринаСырья= 0; Иначе Если (ВидПленки=Перечисление.ВидыПленки.РукавДляПакетов)ИЛИ(ВидПленки=Перечисление.ВидыПленки.ПолуРукавДляПакетов) Тогда Кромка=0; Иначе Кромка=глПолучитьПериодическийАтрибутЭлементаСправочника(ОсновнойМатериал,"КромкаПриПечати",ДатаДляЭкономистов); КонецЕсли; НеобходимаяШиринаСырья= Размер+Кромка; КонецЕсли; ИначеЕсли КакойМатериал="МатериалЛаминации1" Тогда НеобходимаяШиринаСырья= 0; ИначеЕсли КакойМатериал="МатериалЛаминации2" Тогда НеобходимаяШиринаСырья= 0; КонецЕсли; ИначеЕсли фЛаминация=1 Тогда Если КакойМатериал="ОсновнойМатериал" Тогда Если ПустоеЗначение(ОсновнойМатериал)=1 Тогда НеобходимаяШиринаСырья= 0; Иначе Кромка=глПолучитьПериодическийАтрибутЭлементаСправочника(ОсновнойМатериал,"КромкаПриЛаминации",ДатаДляЭкономистов); НеобходимаяШиринаСырья= ШиринаРезиновогоВала+Кромка; Если МинШиринаСырьяОснМатериала<ШиринаРезиновогоВала Тогда МинШиринаСырьяОснМатериала=ШиринаРезиновогоВала; КонецЕсли; Если (фПодписьЛаминаторщика=1) Тогда Если НеобходимаяШиринаСырья<МинШиринаСырьяОснМатериала Тогда НеобходимаяШиринаСырья=МинШиринаСырьяОснМатериала КонецЕсли; КонецЕсли; КонецЕсли; ИначеЕсли КакойМатериал="МатериалЛаминации1" Тогда Если ПустоеЗначение(МатериалЛаминации1)=1 Тогда НеобходимаяШиринаСырья= 0; Иначе Кромка=глПолучитьПериодическийАтрибутЭлементаСправочника(МатериалЛаминации1,"КромкаПриЛаминации",ДатаДляЭкономистов); НеобходимаяШиринаСырья= ШиринаРезиновогоВала+Кромка; Если МинШиринаСырьяМатериалаЛаминации1<ШиринаРезиновогоВала Тогда МинШиринаСырьяМатериалаЛаминации1=ШиринаРезиновогоВала; КонецЕсли; Если (фПодписьЛаминаторщика=1) Тогда Если НеобходимаяШиринаСырья<МинШиринаСырьяМатериалаЛаминации1 Тогда НеобходимаяШиринаСырья=МинШиринаСырьяМатериалаЛаминации1; КонецЕсли; КонецЕсли; КонецЕсли; ИначеЕсли КакойМатериал="МатериалЛаминации2" Тогда Если ПустоеЗначение(МатериалЛаминации2)=1 Тогда НеобходимаяШиринаСырья= 0; Иначе Кромка=глПолучитьПериодическийАтрибутЭлементаСправочника(МатериалЛаминации2,"КромкаПриЛаминации",ДатаДляЭкономистов); НеобходимаяШиринаСырья= ШиринаРезиновогоВала+Кромка; Если МинШиринаСырьяМатериалаЛаминации2<ШиринаРезиновогоВала Тогда МинШиринаСырьяМатериалаЛаминации2=ШиринаРезиновогоВала; КонецЕсли; Если (фПодписьЛаминаторщика=1) Тогда Если НеобходимаяШиринаСырья<МинШиринаСырьяМатериалаЛаминации2 Тогда НеобходимаяШиринаСырья=МинШиринаСырьяМатериалаЛаминации2; КонецЕсли; КонецЕсли; КонецЕсли; КонецЕсли; ИначеЕсли фПакетоделание=1 Тогда НеобходимаяШиринаСырья= Размер; ИначеЕсли (фБабинорезка=1) Тогда НеобходимаяШиринаСырья= Размер; КонецЕсли; КонецЕсли; Возврат НеобходимаяШиринаСырья; КонецФункции //------------------------------------------------------------------------------------------------------------ Процедура ИзмШиринаСуществующегоСырья(КакойМатериал) НеобходимаяШиринаСырья=НеобходимаяШиринаСырья(КакойМатериал); Если КакойМатериал="ОсновнойМатериал" Тогда Если (ПустоеЗначение(ОсновнойМатериал)=0) Тогда Если (ШиринаСырьяОсновногоМатериала < НеобходимаяШиринаСырья) Тогда Предупреждение("Формат сырья не может быть меньше чем "+НеобходимаяШиринаСырья,60); ШиринаСырьяОсновногоМатериала=НеобходимаяШиринаСырья; КонецЕсли; Если (ШиринаСырьяОсновногоМатериала <> Формат1) Тогда Формат1=ШиринаСырьяОсновногоМатериала; КонецЕсли; Иначе ШиринаСырьяОсновногоМатериала=0; Формат1=0; КонецЕсли; ВспомогПроцедура(тбИсторияДокумента,"Изменения",глПользователь,"ШиринаСырьяОсновногоМатериала", "Изменен ШиринаСырьяОсновногоМатериала на "+ШиринаСырьяОсновногоМатериала); ИначеЕсли КакойМатериал="МатериалЛаминации1" Тогда Если (ПустоеЗначение(МатериалЛаминации1)=0) Тогда Если (ШиринаСырьяМатериалаЛаминации1 < НеобходимаяШиринаСырья) Тогда Предупреждение("Формат сырья не может быть меньше чем "+НеобходимаяШиринаСырья,60); ШиринаСырьяМатериалаЛаминации1=НеобходимаяШиринаСырья; КонецЕсли; Если (ШиринаСырьяМатериалаЛаминации1 <> Формат2) Тогда Формат2=ШиринаСырьяМатериалаЛаминации1; КонецЕсли; Иначе ШиринаСырьяМатериалаЛаминации1=0; Формат2=0; КонецЕсли; ВспомогПроцедура(тбИсторияДокумента,"Изменения",глПользователь,"ШиринаСырьяМатериалаЛаминации1", "Изменен ШиринаСырьяМатериалаЛаминации1 на "+ШиринаСырьяМатериалаЛаминации1); ИначеЕсли КакойМатериал="МатериалЛаминации2" Тогда Если (ПустоеЗначение(МатериалЛаминации2)=0) Тогда Если (ШиринаСырьяМатериалаЛаминации2 < НеобходимаяШиринаСырья) Тогда Предупреждение("Формат сырья не может быть меньше чем "+НеобходимаяШиринаСырья,60); ШиринаСырьяМатериалаЛаминации2=НеобходимаяШиринаСырья; КонецЕсли; Если (ШиринаСырьяМатериалаЛаминации2<> Формат3) Тогда Формат3=ШиринаСырьяМатериалаЛаминации2; КонецЕсли; Иначе ШиринаСырьяМатериалаЛаминации2=0; Формат3=0; КонецЕсли; ВспомогПроцедура(тбИсторияДокумента,"Изменения",глПользователь,"ШиринаСырьяМатериалаЛаминации2", "Изменен ШиринаСырьяМатериалаЛаминации2 на "+ШиринаСырьяМатериалаЛаминации2); КонецЕсли; КонтекстФормы=глВернутьКонтекст(Контекст); Если ОбщаяРасчетнаяТаблица.КоличествоСтрок()>0 Тогда МассаДляПереклейки=ОбщаяРасчетнаяТаблица.ПолучитьЗначение(1,"Масса"); ТиражДляПереклейки=ОбщаяРасчетнаяТаблица.ПолучитьЗначение(1,"Тираж"); Иначе МассаДляПереклейки=0; ТиражДляПереклейки=0; КонецЕсли; РасчетСделан=0; НормыРасчета.МассаДляПереклейки=МассаДляПереклейки; НормыРасчета.ТиражДляПереклейки=ТиражДляПереклейки; НормыРасчета.УстановитьДокумент(КонтекстФормы); НормыРасчета.РасчитатьВесТысячи(); КонецПроцедуры //------------------------------------------------------------------------------------------------------------ Процедура ИзмФорматСырья(КакойМатериал) НеобходимаяШиринаСырья=НеобходимаяШиринаСырья(КакойМатериал); Если КакойМатериал="ОсновнойМатериал" Тогда Если (ПустоеЗначение(ОсновнойМатериал)=0) Тогда Если (Формат1 < НеобходимаяШиринаСырья) Тогда Предупреждение("Формат сырья не может быть меньше чем "+НеобходимаяШиринаСырья,60); Формат1=НеобходимаяШиринаСырья; КонецЕсли; Если (Формат1 <> ШиринаСырьяОсновногоМатериала) Тогда ШиринаСырьяОсновногоМатериала=Формат1; КонецЕсли; КонецЕсли; ВспомогПроцедура(тбИсторияДокумента,"Изменения",глПользователь,"Формат1", "Изменен Формат1 на "+Формат1); ИначеЕсли КакойМатериал="МатериалЛаминации1" Тогда Если (ПустоеЗначение(МатериалЛаминации1)=0) Тогда Если (Формат2 < НеобходимаяШиринаСырья) Тогда Предупреждение("Формат сырья не может быть меньше чем "+НеобходимаяШиринаСырья,60); Формат2=НеобходимаяШиринаСырья; КонецЕсли; Если (Формат2 <>ШиринаСырьяМатериалаЛаминации1 ) Тогда ШиринаСырьяМатериалаЛаминации1=Формат2; КонецЕсли; КонецЕсли; ВспомогПроцедура(тбИсторияДокумента,"Изменения",глПользователь,"Формат2", "Изменен Формат2 на "+Формат2); ИначеЕсли КакойМатериал="МатериалЛаминации2" Тогда Если (ПустоеЗначение(МатериалЛаминации2)=0) Тогда Если (Формат3 < НеобходимаяШиринаСырья) Тогда Предупреждение("Формат сырья не может быть меньше чем "+НеобходимаяШиринаСырья,60); Формат3=НеобходимаяШиринаСырья; КонецЕсли; Если (Формат3<> ШиринаСырьяМатериалаЛаминации2) Тогда ШиринаСырьяМатериалаЛаминации2=Формат3; КонецЕсли; КонецЕсли; ВспомогПроцедура(тбИсторияДокумента,"Изменения",глПользователь,"Формат3", "Изменен Формат3 на "+Формат3); КонецЕсли; КонтекстФормы=глВернутьКонтекст(Контекст); Если ОбщаяРасчетнаяТаблица.КоличествоСтрок()>0 Тогда МассаДляПереклейки=ОбщаяРасчетнаяТаблица.ПолучитьЗначение(1,"Масса"); ТиражДляПереклейки=ОбщаяРасчетнаяТаблица.ПолучитьЗначение(1,"Тираж"); Иначе МассаДляПереклейки=0; ТиражДляПереклейки=0; КонецЕсли; НормыРасчета.МассаДляПереклейки=МассаДляПереклейки; НормыРасчета.ТиражДляПереклейки=ТиражДляПереклейки; НормыРасчета.УстановитьДокумент(КонтекстФормы); НормыРасчета.РасчитатьВесТысячи(); РасчетСделан=0; КонецПроцедуры //====================================================================== Процедура ИзмКлей() РасчетСделан=0; КонецПроцедуры // =============================== Функция ПроверкаЗаполненияОбязательныхПолей() глВсеВыбрано = 1; Если тбКонтрагенты.КоличествоСтрок() =0 Тогда Сообщить("Не указан заказчик!"); глВсеВыбрано=0; КонецЕсли; глВыбранЛи(Менеджер,"Менеджер"); глВыбранЛи(ОсновнойМатериал,"Основной Материал"); глВыбранЛи(Формат1,"Формат Основного Материала"); Если КоличествоСтрок() =0 Тогда Сообщить("Не указано ни одного дизайна!"); глВсеВыбрано=0; КонецЕсли; Если КвоДорожекНаВалу=0 Тогда Сообщить("Не указано к-во дорожек на валу"); глВсеВыбрано=0; КонецЕсли; Если фРасположилиРисункиНаВалу=0 Тогда Сообщить("Не указано расположение рисунков на валу"); глВсеВыбрано=0; КонецЕсли; Если ВсеЛиДизайныРазмещены(1)=0 Тогда глВсеВыбрано=0; КонецЕсли; Если ОбщаяРасчетнаяТаблица.КоличествоСтрок() =0 Тогда Сообщить("Не заполнен реквизит Объем"); глВсеВыбрано=0; КонецЕсли; Для ы=1 По тбКонтрагенты.КоличествоСтрок() Цикл ВыбранКонтрагент=тбКонтрагенты.ПолучитьЗначение( ы,"Контрагент"); ВыбранБезнал=тбКонтрагенты.ПолучитьЗначение( ы,"Безнал"); ВыбранНал=тбКонтрагенты.ПолучитьЗначение( ы,"Нал"); ВыбранОплата1=тбКонтрагенты.ПолучитьЗначение( ы,"Оплата1"); ВыбранОплата2=тбКонтрагенты.ПолучитьЗначение( ы,"Оплата2"); ВыбранТаблицаОплаты=тбКонтрагенты.ПолучитьЗначение( ы,"тбОплаты"); Если ВыбранБезнал+ ВыбранНал <>100 Тогда Сообщить("Не заполен реквизит Форма оплаты для "+ВыбранКонтрагент); глВсеВыбрано=0; КонецЕсли; Сумма=ВыбранОплата1+ВыбранОплата2+ВыбранТаблицаОплаты.Итог("Процент"); Если Сумма <100 Тогда Сообщить("Не заполен реквизит Сроки оплаты для "+ВыбранКонтрагент); глВсеВыбрано=0; КонецЕсли; КонецЦикла; Если (спДоставка.ПолучитьЗначение(спДоставка.ТекущаяСтрока())=1)И(ПустоеЗначение(ВыборДоставки)=1) Тогда Сообщить("Не заполен реквизит Выбор Доставки"); глВсеВыбрано=0; КонецЕсли; Если глВсеВыбрано=1 Тогда стрЗаказчики=""; несколько=0; Для ы=1 По тбКонтрагенты.КоличествоСтрок() Цикл ВыбранКонтрагент=тбКонтрагенты.ПолучитьЗначение( ы,"Контрагент"); ВыбранБезнал=тбКонтрагенты.ПолучитьЗначение( ы,"Безнал"); Если ПустоеЗначение(ВыбранБезнал)=1 Тогда Продолжить; КонецЕсли; ПоследнийПодписанныйДоговор=глВернутьПодписанныйДоговор(Фирма,Валюта,ВыбранКонтрагент,Менеджер); Если ПустоеЗначение(ПоследнийПодписанныйДоговор)=1 Тогда Если ПустоеЗначение(стрЗаказчики)=0 Тогда стрЗаказчики=стрЗаказчики+","+РазделительСтрок; несколько=1; КонецЕсли; стрЗаказчики=стрЗаказчики+СокрЛП(ВыбранКонтрагент.Наименование) КонецЕсли; КонецЦикла; Если ПустоеЗначение(стрЗаказчики)=0 Тогда ТекстПредупреждения=" |Будьте внимательны!"; Если несколько=1 Тогда ТекстПредупреждения=ТекстПредупреждения+" |У заказчиков "; Иначе ТекстПредупреждения=ТекстПредупреждения+" |У заказчика "; КонецЕсли; ТекстПредупреждения=ТекстПредупреждения+РазделительСтрок+стрЗаказчики+" |нет подписанного договора!"; Предупреждение(ТекстПредупреждения,60); КонецЕсли; КонецЕсли; Если глВсеВыбрано=1 Тогда стрЗаказчики=""; несколько=0; Для ы=1 По тбКонтрагенты.КоличествоСтрок() Цикл ВыбранКонтрагент=тбКонтрагенты.ПолучитьЗначение( ы,"Контрагент"); ВыбранБезнал=тбКонтрагенты.ПолучитьЗначение( ы,"Безнал"); Если ПустоеЗначение(ВыбранБезнал)=1 Тогда Продолжить; КонецЕсли; Если глПроверитьКарточкуКонтрагента(ВыбранКонтрагент,ДатаДляЭкономистов)=0 Тогда Если ПустоеЗначение(стрЗаказчики)=0 Тогда стрЗаказчики=стрЗаказчики+","+РазделительСтрок; несколько=1; КонецЕсли; стрЗаказчики=стрЗаказчики+СокрЛП(ВыбранКонтрагент.Наименование) КонецЕсли; КонецЦикла; Если ПустоеЗначение(стрЗаказчики)=0 Тогда ТекстПредупреждения=" |Будьте внимательны!"; Если несколько=1 Тогда ТекстПредупреждения=ТекстПредупреждения+" |У заказчиков "; Иначе ТекстПредупреждения=ТекстПредупреждения+" |У заказчика "; КонецЕсли; ТекстПредупреждения=ТекстПредупреждения+РазделительСтрок+стрЗаказчики+" |незаполнена карточка!"; Предупреждение(ТекстПредупреждения,60); КонецЕсли; КонецЕсли; Возврат глВсеВыбрано; КонецФункции //------------------------------------------------------------------------------------------------------------ Функция ПроверкаЗаполненияКрасок() ВозвратнаяСтрока=""; ИТСтрокиДокумента.ВНачало(); Пока ИТСтрокиДокумента.СледующаяСтрока()=1 Цикл ТекДизайн=ИТСтрокиДокумента.Дизайн; ТаблицаКрасокДизайна=ИТСтрокиДокумента.ТаблицаКрасок; КоличествоСтрок=ТаблицаКрасокДизайна.КоличествоСтрок(); ИтогПроцентЗапечатки=ТаблицаКрасокДизайна.Итог("ПроцентЗапечатки"); Если КоличествоСтрок=0 Тогда Если ПустоеЗначение(ВозвратнаяСтрока)=0 Тогда ВозвратнаяСтрока=ВозвратнаяСтрока+РазделительСтрок; КонецЕсли; ВозвратнаяСтрока=ВозвратнаяСтрока+"Не заполнена таблица красок для дизайна "+ТекДизайн; ИначеЕсли ИтогПроцентЗапечатки=0 Тогда Если ПустоеЗначение(ВозвратнаяСтрока)=0 Тогда ВозвратнаяСтрока=ВозвратнаяСтрока+РазделительСтрок; КонецЕсли; ВозвратнаяСтрока=ВозвратнаяСтрока+"Процент запечатки в таблице красок для дизайна "+ТекДизайн+" =0"; КонецЕсли; КонецЦикла; Возврат ВозвратнаяСтрока; КонецФункции //------------------------------------------------------------------------------------------------------------ Процедура СоздатьЗаказБезОткрытияФормы() Далее //====================================================================== Процедура ОбновитьСпецификации() Если Выбран()=0 Тогда Возврат; КонецЕсли; ОбъектСпецификация=СоздатьОбъект("ДокументСпецификация"); КонтекстРасчета=глВернутьКонтекст(Контекст); Для ы=1 по тбКонтрагенты.КоличествоСтрок() Цикл ТекЗаказчик=тбКонтрагенты.ПолучитьЗначение(ы,"Контрагент"); ТекМенеджер=тбКонтрагенты.ПолучитьЗначение(ы,"Менеджер"); НестандартныйОбъемТекЗаказчика=тбКонтрагенты.ПолучитьЗначение(ТекСтрокатбКонтрагенты,"НестандартныйОбъем"); УстановленныйОбъемТекЗаказчика=тбКонтрагенты.ПолучитьЗначение(ТекСтрокатбКонтрагенты,"УстановленныйОбъем"); УстановленнаяЦенаТекЗаказчика=тбКонтрагенты.ПолучитьЗначение(ТекСтрокатбКонтрагенты,"УстановленнаяЦенаПоДокументам"); НестандартныеЧислаВДокументахТекЗаказчика=ТекЗаказчик.НестандартныеЧислаВДокументах.Получить(ДатаДляЭкономистов); СуммаЗаказа=УстановленнаяЦенаТекЗаказчика*УстановленныйОбъемТекЗаказчика; ЦенаДляСпецификации=УстановленнаяЦенаТекЗаказчика; Если НестандартныеЧислаВДокументахТекЗаказчика=1 Тогда Если НестандартныйОбъемТекЗаказчика<>0 Тогда ЦенаДляСпецификации=СуммаЗаказа/НестандартныйОбъемТекЗаказчика; УстановленныйОбъемТекЗаказчика=НестандартныйОбъемТекЗаказчика; КонецЕсли; КонецЕсли; ВыбранСпецификация=глВернутьСпецификациюПоРасчету(ТекущийДокумент(),ТекЗаказчик); Если ПустоеЗначение(ВыбранСпецификация)=0 Тогда ТекстВопроса="Изменилась цена. Обновить спецификацию для "+ТекЗаказчик+"? |(В спецификации будут сброшены подписи))"; Ответ = Вопрос(ТекстВопроса,"Да+Нет",60); Если Ответ = "Да" Тогда ТекСпецификация=СоздатьОбъект("Документ.Спецификация"); ТекСпецификация.НайтиДокумент(ВыбранСпецификация); ТекСпецификация.фПодписьМенеджера=0; ТекСпецификация.ПодписьМенеджера=""; ТекСпецификация.ДатаПодписиМенеджера=""; ТекСпецификация.ВремяПодписиМенеджера=""; ТекСпецификация.фПодписьЮриста=0; ТекСпецификация.ПодписьЮриста=""; ТекСпецификация.ДатаПодписиЮриста=""; ТекСпецификация.ВремяПодписиЮриста=""; ТекСпецификация.фПодписьРуководителя=0; ТекСпецификация.ПодписьРуководителя=""; ТекСпецификация.ДатаПодписиРуководителя=""; ТекСпецификация.ВремяПодписиРуководителя=""; ТекСпецификация.ФизичНаличиеДокумента=Перечисление.ВариантыНаличияДокумента.Нет; ТекСпецификация.ПодписьНаличиеДокумента=""; ТекСпецификация.ДатаПодписиНаличиеДокумента=""; ТекСпецификация.ВремяПодписиНаличиеДокумента=""; СохранитьПредАтрибутыИТаблицы(тбКонтрагенты); ТекСтрокатбКонтрагенты=ы; ОбновитьВидимыеАтрибутыИТаблицы(тбКонтрагенты); ОбъектСпецификация.УстановитьДокумент(ТекСпецификация); ОбъектСпецификация.ПерезаполнитьНаОсновании(КонтекстРасчета,ТекЗаказчик,УстановленныйОбъемТекЗаказчика,ЦенаДляСпецификации); ТекСпецификация.Записать(); КонецЕсли; КонецЕсли; КонецЦикла; КонецПроцедуры // ОбновитьСпецификации //------------------------------------------------------------------------------------------------------------ Функция ИзмПодписьМенеджера() Если фПодписьМенеджера=0 Тогда фПодписьТехнолога=0; фПодписьЭкономиста=0; ДатаДляЭкономистов=ТекущаяДата(); Иначе СохранитьПредАтрибутыИТаблицы(тбКонтрагенты); Если ПроверкаЗаполненияОбязательныхПолей()=0 Тогда фПодписьМенеджера=0; Возврат 0; КонецЕсли; КонецЕсли; Если фПодписьМенеджера=1 Тогда ЗаполнилМенеджер=глПользователь; ВспомогПроцедура(тбИсторияДокумента,"Изменения",глПользователь,"ПодписалЛиМенеджер", "Поставлена подпись менеджера"); Иначе ЗаполнилМенеджер=""; ВспомогПроцедура(тбИсторияДокумента,"Изменения",глПользователь,"ПодписалЛиМенеджер", "Сната подпись менеджера"); КонецЕсли; Возврат 1; КонецФункции //------------------------------------------------------------------------------------------------------------ Функция МожноЛиСтавитьПодписьТехнолога() ВозвратнаяСтрока=ПроверкаЗаполненияКрасок(); Если ПустоеЗначение(ВозвратнаяСтрока)=0 Тогда Предупреждение(ВозвратнаяСтрока); КонецЕсли; Если фПодписьМенеджера<>1 Тогда Предупреждение("Нет подписи менеджера!"); Возврат 0; КонецЕсли; Возврат 1; КонецФункции //------------------------------------------------------------------------------------------------------------ Процедура НажатаКнопкаРешениеТехнолога(Решение) Перем ФлажокПодпись; Перем ФлажокОтказ; Если фПодписьТехнолога=1 Тогда ФлажокПодпись=1; ФлажокОтказ=0; ИначеЕсли фПодписьТехнолога=2 Тогда ФлажокПодпись=0; ФлажокОтказ=1; Иначе ФлажокПодпись=0; ФлажокОтказ=0; КонецЕсли; Если (фПодписьТехнолога<>0) Тогда //проверим вышестоящие подписи Если (фПодписьЭкономиста=1)или (фПодписьСогласованиеЦены=1) Тогда Предупреждение("Снимите вышестоящие подписи!"); Возврат; КонецЕсли; КонецЕсли; Если Решение="Подпись" Тогда Если ФлажокПодпись=1 Тогда ФлажокПодпись=0; Иначе ФлажокПодпись=1; КонецЕсли; Если ФлажокПодпись=1 Тогда Если ФлажокОтказ=1 Тогда ВспомогПроцедура(тбИсторияДокумента,"Изменения",глПользователь,"ПодписалЛиТехнолог", "Снат отказ в подписи технолога"); КонецЕсли; Если МожноЛиСтавитьПодписьТехнолога()=0 Тогда Возврат; КонецЕсли; ВспомогПроцедура(тбИсторияДокумента,"Изменения",глПользователь,"ПодписалЛиТехнолог", "Поставлена подпись технолога"); Иначе ВспомогПроцедура(тбИсторияДокумента,"Изменения",глПользователь,"ПодписалЛиТехнолог", "Сната подпись технолога"); КонецЕсли; ИначеЕсли Решение="ОтказВПодписи" Тогда Если ФлажокОтказ=1 Тогда ФлажокОтказ=0; Иначе ФлажокОтказ=1; КонецЕсли; Если ФлажокОтказ=1 Тогда Если ФлажокПодпись=1 Тогда ФлажокПодпись=0; КонецЕсли; ВспомогПроцедура(тбИсторияДокумента,"Изменения",глПользователь,"ПодписалЛиТехнолог", "Поставлен отказ в подписи технолога"); Иначе Если ФлажокПодпись=0 Тогда ВспомогПроцедура(тбИсторияДокумента,"Изменения",глПользователь,"ПодписалЛиТехнолог", "Снат отказ в подписи технолога"); КонецЕсли; КонецЕсли; КонецЕсли; глОбработкаНажатияКнопкиРешение(Решение,фПодписьТехнолога,картинаПодписьТехнолога,ЗаполнилТехнолог,,); Если фПодписьТехнолога=1 Тогда ПДИнТбТехнолог.Данные.ИзменятьСоставСтрок=0; ПДИТКраски.Данные.ИзменятьСоставСтрок=0; Иначе ПДИнТбТехнолог.Данные.ИзменятьСоставСтрок=1; ПДИТКраски.Данные.ИзменятьСоставСтрок=1; КонецЕсли; КонецПроцедуры //------------------------------------------------------------------------------------------------------------ Процедура НажатаКнопкаРешениеЛаминаторщика(Решение) Перем ФлажокПодпись; Перем ФлажокОтказ; Если фПодписьЛаминаторщика=1 Тогда ФлажокПодпись=1; ФлажокОтказ=0; ИначеЕсли фПодписьЛаминаторщика=2 Тогда ФлажокПодпись=0; ФлажокОтказ=1; Иначе ФлажокПодпись=0; ФлажокОтказ=0; КонецЕсли; Если Решение="Подпись" Тогда Если ФлажокПодпись=1 Тогда ФлажокПодпись=0; Иначе ФлажокПодпись=1; КонецЕсли; Если ФлажокПодпись=1 Тогда Если ФлажокОтказ=1 Тогда ВспомогПроцедура(тбИсторияДокумента,"Изменения",глПользователь,"ПодписалЛиЛаминаторщик", "Снат отказ в подписи спец.по ламинации"); КонецЕсли; //Если МожноЛиСтавитьПодписьТехнолога()=0 Тогда // Возврат; //КонецЕсли; ВспомогПроцедура(тбИсторияДокумента,"Изменения",глПользователь,"ПодписалЛиЛаминаторщик", "Поставлена подпись спец.по ламинации"); Иначе ВспомогПроцедура(тбИсторияДокумента,"Изменения",глПользователь,"ПодписалЛиЛаминаторщик", "Сната подпись спец.по ламинации"); КонецЕсли; ИначеЕсли Решение="ОтказВПодписи" Тогда Если ФлажокОтказ=1 Тогда ФлажокОтказ=0; Иначе ФлажокОтказ=1; КонецЕсли; Если ФлажокОтказ=1 Тогда Если ФлажокПодпись=1 Тогда ФлажокПодпись=0; КонецЕсли; ВспомогПроцедура(тбИсторияДокумента,"Изменения",глПользователь,"ПодписалЛиЛаминаторщик", "Поставлен отказ в подписи спец.по ламинации"); Иначе Если ФлажокПодпись=0 Тогда ВспомогПроцедура(тбИсторияДокумента,"Изменения",глПользователь,"ПодписалЛиЛаминаторщик", "Снат отказ в подписи спец.по ламинации"); КонецЕсли; КонецЕсли; КонецЕсли; глОбработкаНажатияКнопкиРешение(Решение,фПодписьЛаминаторщика,картинаПодписьЛаминаторщика,ЗаполнилЛаминаторщик,,); Если фПодписьТехнолога=1 Тогда ПДИнТбЛаминаторщик.Данные.ИзменятьСоставСтрок=0; Иначе ПДИнТбЛаминаторщик.Данные.ИзменятьСоставСтрок=1; КонецЕсли; КонецПроцедуры //------------------------------------------------------------------------------------------------------------ Функция МожноЛиСтавитьПодписьЭкономиста() Если (фПодписьМенеджера<>1)ИЛИ(фПодписьТехнолога<>1) Тогда Предупреждение("Нет подписи менеджера или технолога!"); Возврат 0; КонецЕсли; Если РасчетСделан=0 Тогда Предупреждение("Выполните перерасчет!"); Возврат 0; КонецЕсли; Возврат 1; КонецФункции //------------------------------------------------------------------------------------------------------------ Процедура НажатаКнопкаРешениеЭкономиста(Решение) Перем ФлажокПодпись; Перем ФлажокОтказ; Если фПодписьЭкономиста=1 Тогда ФлажокПодпись=1; ФлажокОтказ=0; ИначеЕсли фПодписьЭкономиста=2 Тогда ФлажокПодпись=0; ФлажокОтказ=1; Иначе ФлажокПодпись=0; ФлажокОтказ=0; КонецЕсли; Если Решение="Подпись" Тогда Если ФлажокПодпись=1 Тогда ФлажокПодпись=0; Иначе ФлажокПодпись=1; КонецЕсли; Если ФлажокПодпись=1 Тогда Если ФлажокОтказ=1 Тогда ВспомогПроцедура(тбИсторияДокумента,"Изменения",глПользователь,"ПодписалЛиЭкономист", "Снат отказ в подписи экономиста"); КонецЕсли; Если МожноЛиСтавитьПодписьЭкономиста()=0 Тогда Возврат; КонецЕсли; ВспомогПроцедура(тбИсторияДокумента,"Изменения",глПользователь,"ПодписалЛиЭкономист", "Поставлена подпись экономиста"); Иначе ВспомогПроцедура(тбИсторияДокумента,"Изменения",глПользователь,"ПодписалЛиЭкономист", "Сната подпись экономиста"); КонецЕсли; ИначеЕсли Решение="ОтказВПодписи" Тогда Если ФлажокОтказ=1 Тогда ФлажокОтказ=0; Иначе ФлажокОтказ=1; КонецЕсли; Если ФлажокОтказ=1 Тогда Если ФлажокПодпись=1 Тогда ФлажокПодпись=0; КонецЕсли; ВспомогПроцедура(тбИсторияДокумента,"Изменения",глПользователь,"ПодписалЛиЭкономист", "Поставлен отказ в подписи экономиста"); Иначе Если ФлажокПодпись=0 Тогда ВспомогПроцедура(тбИсторияДокумента,"Изменения",глПользователь,"ПодписалЛиЭкономист", "Снат отказ в подписи экономиста"); КонецЕсли; КонецЕсли; КонецЕсли; глОбработкаНажатияКнопкиРешение(Решение,фПодписьЭкономиста,картинаПодписьЭкономиста,ЗаполнилЭкономист,,); КонецПроцедуры //------------------------------------------------------------------------------------------------------------ Функция МожноЛиСтавитьПодписьСогласованиеЦены() Если (фПодписьМенеджера<>1) ИЛИ(фПодписьТехнолога<>1) Тогда Предупреждение("Нет всех нижестоящих подписей!"); Возврат 0; КонецЕсли; Если (ОбщийПродажныйОбъем=0) Тогда Предупреждение("Не указан продажный объем!"); Возврат 0; КонецЕсли; Если РасчетСделан=0 Тогда Предупреждение("Выполните перерасчет!"); Возврат 0; КонецЕсли; Если ПустоеЗначение(ДокументВладелец)=0 Тогда Если (ИмяПользователя()<>"Вакиль") И(ИмяПользователя()<>"Лиана") И(ИмяПользователя()<>"Ліана") И(ИмяПользователя()<>"zk96") Тогда Предупреждение("При переделке заказа Эту подпись может ставить только Вакиль!"); Возврат 0; КонецЕсли; КонецЕсли; Для НС=1 По тбКонтрагенты.КоличествоСтрок() Цикл Если тбКонтрагенты.ПолучитьЗначение(НС,"УстановленнаяЦена")=0 Тогда Предупреждение("Не установлена цена!"); Возврат 0; КонецЕсли; КонецЦикла; Для НС=1 По тбКонтрагенты.КоличествоСтрок() Цикл Если тбКонтрагенты.ПолучитьЗначение(НС,"РентабельностьЗаказа")= Перечисление.Рентабельность.НижеНеРентабельно Тогда Если (ИмяПользователя()<>"Вакиль") И(ИмяПользователя()<>"Лиана") И(ИмяПользователя()<>"Ліана") И(ИмяПользователя()<>"zk96") Тогда Предупреждение("При цене НижеНеРентабельно имеет право подписывать только Вакиль!"); Возврат 0; КонецЕсли; КонецЕсли; КонецЦикла; Если РентабельностьЗаказа= Перечисление.Рентабельность.НижеНеРентабельно Тогда Если (ИмяПользователя()<>"Вакиль") И(ИмяПользователя()<>"Лиана") И(ИмяПользователя()<>"Ліана") И(ИмяПользователя()<>"zk96") Тогда Предупреждение("При цене НижеНеРентабельно имеет право подписывать только Вакиль!"); Возврат 0; КонецЕсли; КонецЕсли; Возврат 1; КонецФункции //------------------------------------------------------------------------------------------------------------ Функция ОбновитьЗаказы() Далее Процедура НажатаКнопкаРешениеСогласованиеЦены(Решение) Перем ФлажокПодпись; ФлажокПодпись=фПодписьСогласованиеЦены; Если Решение="Подпись" Тогда Если ПустоеЗначение(ФлажокПодпись)<>1 Тогда Если ФлажокПодпись=1 Тогда ВспомогПроцедура(тбИсторияДокумента,"Изменения",глПользователь,"ПодписьСогласованиеЦены", "Сната подпись о согласование цены"); ИначеЕсли ФлажокПодпись=2 Тогда ВспомогПроцедура(тбИсторияДокумента,"Изменения",глПользователь,"ПодписьСогласованиеЦены", "Снат отказ в подписи о согласование цены"); КонецЕсли; ФлажокПодпись=0; Иначе ФлажокПодпись=1; КонецЕсли; ИначеЕсли Решение="ОтказВПодписи" Тогда Если ПустоеЗначение(ФлажокПодпись)<>1 Тогда Если ФлажокПодпись=1 Тогда ВспомогПроцедура(тбИсторияДокумента,"Изменения",глПользователь,"ПодписьСогласованиеЦены", "Сната подпись о согласование цены"); ИначеЕсли ФлажокПодпись=2 Тогда ВспомогПроцедура(тбИсторияДокумента,"Изменения",глПользователь,"ПодписьСогласованиеЦены", "Снат отказ в подписи о согласование цены"); КонецЕсли; ФлажокПодпись=0; Иначе ФлажокПодпись=2; КонецЕсли; КонецЕсли; Если ФлажокПодпись=1 Тогда Если МожноЛиСтавитьПодписьСогласованиеЦены()=0 Тогда Возврат; КонецЕсли; ВспомогПроцедура(тбИсторияДокумента,"Изменения",глПользователь,"ПодписьСогласованиеЦены", "Поставлена подпись о согласование цены"); ИначеЕсли ФлажокПодпись=2 Тогда ВспомогПроцедура(тбИсторияДокумента,"Изменения",глПользователь,"ПодписьСогласованиеЦены", "Поставлен отказ в подписи о согласование цены"); КонецЕсли; глОбработкаНажатияКнопкиРешение(Решение,фПодписьСогласованиеЦены,картинаПодписьСогласованиеЦены,ЗаполнилСогласованиеЦены,,); ЦенаИзменена=Нет; Для ы=1 по тбКонтрагенты.КоличествоСтрок() Цикл НС=итСтарыеУстановленныеЦены.НайтиСтроку("инКонтрагент",тбКонтрагенты.Контрагент); Если НС=0 Тогда Если тбКонтрагенты.УстановленнаяЦена<>0 Тогда ЦенаИзменена=Да; Прервать; КонецЕсли; Иначе Если итСтарыеУстановленныеЦены.УстановленнаяЦена <> тбКонтрагенты.УстановленнаяЦена Тогда ЦенаИзменена=Да; Прервать; КонецЕсли; КонецЕсли; КонецЦикла; Если (ЦенаИзменена=Да)и(фПодписьСогласованиеЦены=1) Тогда ИзмСогласованиеЦены=ИзмСогласованиеЦены+1; ОбновитьСпецификации(); КонецЕсли; КонецПроцедуры //------------------------------------------------------------------------------------------------------------ Процедура НажатаКнопкаУОСогласен(Решение) //ФлажокПодпись=фПодписьУОСогласен; //ТекстВопроса=""; //Для НС=1 По тбКонтрагенты.КоличествоСтрок() Цикл // ВыбранКонтрагент=тбКонтрагенты.ПолучитьЗначение(НС,"Контрагент"); // ВыбранБезнал=тбКонтрагенты.ПолучитьЗначение( НС,"Безнал"); // Если ВыбранБезнал=0 Тогда // Продолжить; // КонецЕсли; // ВыбранОплата1=тбКонтрагенты.ПолучитьЗначение( НС,"Оплата1"); // ВыбранОплата2=тбКонтрагенты.ПолучитьЗначение( НС,"Оплата2"); // ВыбранТаблицаОплаты=тбКонтрагенты.ПолучитьЗначение( НС,"тбОплаты"); // ВыбранОплата3=ВыбранТаблицаОплаты.Итог("Процент"); // ВыбранСрокОтсрочки=глНайтиМаксимальное(ВыбранТаблицаОплаты,"КвоДней"); // // ПоследнийПодписанныйДоговор=глВернутьПодписанныйДоговор(Фирма,Валюта,ВыбранКонтрагент,Менеджер); // // Если (ПустоеЗначение(ПоследнийПодписанныйДоговор)=0)и(Безнал>0) Тогда // ТекОплата1=ПоследнийПодписанныйДоговор.Оплата1; // ТекОплата2=ПоследнийПодписанныйДоговор.Оплата2; // ТекОплата3=ПоследнийПодписанныйДоговор.Оплата3; // ТекСрокОтсрочки=ПоследнийПодписанныйДоговор.СрокОтсрочки; // // Если (ТекОплата1<>ВыбранОплата1)или (ТекОплата2<>ВыбранОплата2) // или (ТекОплата3<>ВыбранОплата3) или (ТекСрокОтсрочки<>ВыбранСрокОтсрочки) Тогда // ТекстВопроса=ТекстВопроса+" // |Условия оплаты для // |"+ВыбранКонтрагент+" // |в расчете отличаются // |от договора."; // КонецЕсли; // КонецЕсли; //КонецЦикла; //Если ПустоеЗначение(ТекстВопроса)=0 Тогда // ТекстВопроса=ТекстВопроса+" // |Поставить подпись?"; //КонецЕсли; // // // //Если Решение="Подпись" Тогда // Если ПустоеЗначение(ФлажокПодпись)<>1 Тогда // Если ФлажокПодпись=2 Тогда // ВспомогПроцедура(тбИсторияДокумента,"Изменения",глПользователь,"ПодписалУО", // "Снат отказ в подписи условия оплаты"); // ИначеЕсли ФлажокПодпись=1 Тогда // ВспомогПроцедура(тбИсторияДокумента,"Изменения",глПользователь,"ПодписалУО", // "Сната подпись условия оплаты"); // КонецЕсли; // ФлажокПодпись=0; // Иначе // ФлажокПодпись=1; // КонецЕсли; // //ИначеЕсли Решение="ОтказВПодписи" Тогда // Если ПустоеЗначение(ФлажокПодпись)<>1 Тогда // Если ФлажокПодпись=2 Тогда // ВспомогПроцедура(тбИсторияДокумента,"Изменения",глПользователь,"ПодписалУО", // "Снат отказ в подписи условия оплаты"); // ИначеЕсли ФлажокПодпись=1 Тогда // ВспомогПроцедура(тбИсторияДокумента,"Изменения",глПользователь,"ПодписалУО", // "Сната подпись условия оплаты"); // КонецЕсли; // ФлажокПодпись=0; // Иначе // ФлажокПодпись=2; // КонецЕсли; //КонецЕсли; //Если ФлажокПодпись=1 Тогда // Если МожноЛиСтавитьПодписьСогласованиеЦены()=0 Тогда // Возврат; // КонецЕсли; // Если ПустоеЗначение(ТекстВопроса)=0 Тогда // Ответ=Вопрос(ТекстВопроса,"Да+Нет"); // Если Ответ<>"Да" Тогда // Возврат; // КонецЕсли; // КонецЕсли; // ВспомогПроцедура(тбИсторияДокумента,"Изменения",глПользователь,"ПодписалУО", // "Поставлена подпись условия оплаты"); //ИначеЕсли ФлажокПодпись=2 Тогда // ВспомогПроцедура(тбИсторияДокумента,"Изменения",глПользователь,"ПодписалУО", // "Поставлен отказ в подписи условия оплаты"); //КонецЕсли; //глОбработкаНажатияКнопкиРешение(Решение,фПодписьУОСогласен,картинаПодписьУО,ЗаполнилУОСогласен,,); //Если фПодписьУОСогласен=2 Тогда // глОбработкаНажатияКнопкиРешение(Решение,фПодписьСогласованиеЦены,картинаПодписьСогласованиеЦены,ЗаполнилСогласованиеЦены,,); //КонецЕсли; КонецПроцедуры //------------------------------------------------------------------------------------------------------------ Процедура ИзмПодписи(флажок) НеСохранен=1; Если флажок="фПодписьМенеджера" Тогда Если ИзмПодписьМенеджера() =0 Тогда СтатусВозврата(0); Возврат; КонецЕсли; //ИначеЕсли флажок="фПодписьТехнолога" Тогда // Если ИзмПодписьТехнолога() =0 Тогда // СтатусВозврата(0); // Возврат; // КонецЕсли; КонецЕсли; КонецПроцедуры //------------------------------------------------------------------------------------------------------------ Процедура ИзмОткат() Если ОбщийПродажныйОбъем=0 Тогда УстановленнаяЦенаБезФорм=0; Предупреждение("Продажный объем = 0 !"); СтатусВозврата(0); Возврат; КонецЕсли; Если тбКонтрагенты.КоличествоСтрок()=1 Тогда ОткатТекЗаказчика=Откат; тбКонтрагенты.УстановитьЗначение(ТекСтрокатбКонтрагенты,"Откат",ОткатТекЗаказчика); КонецЕсли; ОткатТекЗаказчика=тбКонтрагенты.ПолучитьЗначение(ТекСтрокатбКонтрагенты,"Откат"); УстановленныйОбъемТекЗаказчика=тбКонтрагенты.ПолучитьЗначение(ТекСтрокатбКонтрагенты,"УстановленныйОбъем"); ФормыПродаютсяОтдельноТекЗаказчика=тбКонтрагенты.ПолучитьЗначение(ТекСтрокатбКонтрагенты,"фДругаяСтоимостьФорм"); Если ФормыПродаютсяОтдельноТекЗаказчика=1 Тогда УстановленнаяЦенаТекЗаказчика=тбКонтрагенты.ПолучитьЗначение(ТекСтрокатбКонтрагенты,"УстановленнаяЦенаБезФорм"); Иначе УстановленнаяЦенаТекЗаказчика=тбКонтрагенты.ПолучитьЗначение(ТекСтрокатбКонтрагенты,"УстановленнаяЦена"); КонецЕсли; УстановленнаяЦенаПоДокументамТекЗаказчика=УстановленнаяЦенаТекЗаказчика+ОткатТекЗаказчика*100/90; тбКонтрагенты.УстановитьЗначение(ТекСтрокатбКонтрагенты,"Откат",ОткатТекЗаказчика); тбКонтрагенты.УстановитьЗначение(ТекСтрокатбКонтрагенты,"УстановленнаяЦенаПоДокументам",УстановленнаяЦенаПоДокументамТекЗаказчика); ОбновитьТаблицыДокумента(); ВспомогПроцедура(тбИсторияДокумента,"Изменения",глПользователь,"Откат", "Изменен Откат на "+ОткатТекЗаказчика); КонецПроцедуры //------------------------------------------------------------------------------------------------------------ Процедура ИзмУстановленнаяЦенаПоДокументам() Если ОбщийПродажныйОбъем=0 Тогда Предупреждение("Продажный объем = 0 !"); Иначе Если тбКонтрагенты.КоличествоСтрок()=1 Тогда УстановленнаяЦенаПоДокументамТекЗаказчика=УстановленнаяЦенаПоДокументам; тбКонтрагенты.УстановитьЗначение(ТекСтрокатбКонтрагенты,"УстановленнаяЦенаПоДокументам",УстановленнаяЦенаПоДокументамТекЗаказчика); КонецЕсли; УстановленнаяЦенаПоДокументамТекЗаказчика=тбКонтрагенты.ПолучитьЗначение(ТекСтрокатбКонтрагенты,"УстановленнаяЦенаПоДокументам"); ТекЗаказчик=тбКонтрагенты.ПолучитьЗначение(ТекСтрокатбКонтрагенты,"Контрагент"); ФормыПродаютсяОтдельноТекЗаказчика=тбКонтрагенты.ПолучитьЗначение(ТекСтрокатбКонтрагенты,"фДругаяСтоимостьФорм"); УстановленныйОбъемТекЗаказчика=тбКонтрагенты.ПолучитьЗначение(ТекСтрокатбКонтрагенты,"УстановленныйОбъем"); ПродажнаяСтоимостьФормТекЗаказчика=тбКонтрагенты.ПолучитьЗначение(ТекСтрокатбКонтрагенты,"ПродажнаяСтоимостьФорм"); УстановленнаяЦенаБезФормТекЗаказчика=тбКонтрагенты.ПолучитьЗначение(ТекСтрокатбКонтрагенты,"УстановленнаяЦенаБезФорм"); УстановленнаяЦенаТекЗаказчика=тбКонтрагенты.ПолучитьЗначение(ТекСтрокатбКонтрагенты,"УстановленнаяЦена"); Если ФормыПродаютсяОтдельноТекЗаказчика=1 Тогда ЦенаТекЗаказчика=УстановленнаяЦенаБезФормТекЗаказчика; Иначе ЦенаТекЗаказчика=УстановленнаяЦенаТекЗаказчика; КонецЕсли; ОткатТекЗаказчика=(УстановленнаяЦенаПоДокументамТекЗаказчика-ЦенаТекЗаказчика)/100*90; тбКонтрагенты.УстановитьЗначение(ТекСтрокатбКонтрагенты,"УстановленнаяЦенаПоДокументам",УстановленнаяЦенаПоДокументамТекЗаказчика); тбКонтрагенты.УстановитьЗначение(ТекСтрокатбКонтрагенты,"Откат",ОткатТекЗаказчика); ВспомогПроцедура(тбИсторияДокумента,"Изменения",глПользователь,"УстановленнаяЦенаПоДокументам", "Изменен УстановленнаяЦена на "+УстановленнаяЦенаПоДокументамТекЗаказчика); КонецЕсли; ОбновитьТаблицыДокумента(); КонецПроцедуры //------------------------------------------------------------------------------------------------------------ Процедура ИзмУстановленнаяЦенаБезФорм() Если ОбщийПродажныйОбъем=0 Тогда Предупреждение("Продажный объем = 0 !"); СтатусВозврата(0); Возврат; КонецЕсли; Если РасчетСделан=0 Тогда Предупреждение("Выполните перерасчет!"); СтатусВозврата(0); Возврат; КонецЕсли; Если тбКонтрагенты.КоличествоСтрок()=1 Тогда УстановленнаяЦенаБезФормТекЗаказчика=УстановленнаяЦенаБезФорм; тбКонтрагенты.УстановитьЗначение(ТекСтрокатбКонтрагенты,"УстановленнаяЦенаБезФорм",УстановленнаяЦенаБезФорм); КонецЕсли; УстановленнаяЦенаБезФормТекЗаказчика=тбКонтрагенты.ПолучитьЗначение(ТекСтрокатбКонтрагенты,"УстановленнаяЦенаБезФорм"); УстановленнаяЦенаТекЗаказчика=тбКонтрагенты.ПолучитьЗначение(ТекСтрокатбКонтрагенты,"УстановленнаяЦена"); ОткатТекЗаказчика=тбКонтрагенты.ПолучитьЗначение(ТекСтрокатбКонтрагенты,"Откат"); УстановленныйОбъемТекЗаказчика=тбКонтрагенты.ПолучитьЗначение(ТекСтрокатбКонтрагенты,"УстановленныйОбъем"); ФормыПродаютсяОтдельноТекЗаказчика=тбКонтрагенты.ПолучитьЗначение(ТекСтрокатбКонтрагенты,"фДругаяСтоимостьФорм"); ПродажнаяСтоимостьФормТекЗаказчика=тбКонтрагенты.ПолучитьЗначение(ТекСтрокатбКонтрагенты,"ПродажнаяСтоимостьФорм"); Если ФормыПродаютсяОтдельноТекЗаказчика=1 Тогда ЦенаТекЗаказчика=УстановленнаяЦенаБезФормТекЗаказчика; Иначе ЦенаТекЗаказчика=УстановленнаяЦенаТекЗаказчика; КонецЕсли; УстановленнаяЦенаПоДокументамТекЗаказчика=ЦенаТекЗаказчика+ОткатТекЗаказчика*100/90; ТаблицаРасчетнаяМассаОдногоЗаказчика=СоздатьОбъект("ТаблицаЗначений"); ТаблицаРасчетнаяМассаОдногоЗаказчика.Загрузить(тбКонтрагенты.ПолучитьЗначение(ТекСтрокатбКонтрагенты,"тбРасчетнаяМасса")); УстановленнаяЦенаТекЗаказчика=УстановленнаяЦенаБезФормТекЗаказчика+ПродажнаяСтоимостьФормТекЗаказчика/УстановленныйОбъемТекЗаказчика; Рентабельность=РасчитатьРентабельностьЗаказа(ТаблицаРасчетнаяМассаОдногоЗаказчика,УстановленныйОбъемТекЗаказчика,УстановленнаяЦенаТекЗаказчика); тбКонтрагенты.УстановитьЗначение(ТекСтрокатбКонтрагенты,"УстановленнаяЦенаБезФорм",УстановленнаяЦенаБезФормТекЗаказчика); тбКонтрагенты.УстановитьЗначение(ТекСтрокатбКонтрагенты,"УстановленнаяЦена",УстановленнаяЦенаТекЗаказчика); тбКонтрагенты.УстановитьЗначение(ТекСтрокатбКонтрагенты,"УстановленнаяЦенаПоДокументам",УстановленнаяЦенаПоДокументамТекЗаказчика); тбКонтрагенты.УстановитьЗначение(ТекСтрокатбКонтрагенты,"РентабельностьЗаказа",Рентабельность); ОбновитьТаблицыДокумента(); ВспомогПроцедура(тбИсторияДокумента,"Изменения",глПользователь,"УстановленнаяЦена", "Изменен УстановленнаяЦена на "+УстановленнаяЦена); КонецПроцедуры //------------------------------------------------------------------------------------------------------------ Процедура ИзмПродажныйОбъемКотрагентов() Для ы=1 По тбКонтрагенты.КоличествоСтрок() Цикл КоефициентОтОбщегоЗаказа=тбКонтрагенты.ПолучитьЗначение(ы,"КоефициентОтОбщегоЗаказа"); ФормыПродаютсяОтдельноТекЗаказчика=тбКонтрагенты.ПолучитьЗначение(ы,"фДругаяСтоимостьФорм"); УстановленнаяЦенаБезФормТекЗаказчика=тбКонтрагенты.ПолучитьЗначение(ы,"УстановленнаяЦенаБезФорм"); УстановленнаяЦенаТекЗаказчика=тбКонтрагенты.ПолучитьЗначение(ы,"УстановленнаяЦена"); ПродажнаяСтоимостьФормТекЗаказчика=тбКонтрагенты.ПолучитьЗначение(ы,"ПродажнаяСтоимостьФорм"); ОткатТекЗаказчика=тбКонтрагенты.ПолучитьЗначение(ТекСтрокатбКонтрагенты,"Откат"); УстановленныйОбъемТекЗаказчика=ОбщийПродажныйОбъем*КоефициентОтОбщегоЗаказа; Если УстановленныйОбъемТекЗаказчика=0 Тогда УстановленнаяЦенаБезФормТекЗаказчика=0; УстановленнаяЦенаТекЗаказчика=0; УстановленнаяЦенаПоДокументамТекЗаказчика=0; Рентабельность=""; Иначе Если ФормыПродаютсяОтдельноТекЗаказчика=1 Тогда УстановленнаяЦенаТекЗаказчика=УстановленнаяЦенаБезФормТекЗаказчика+ПродажнаяСтоимостьФормТекЗаказчика/УстановленныйОбъемТекЗаказчика; КонецЕсли; Если ФормыПродаютсяОтдельноТекЗаказчика=1 Тогда ЦенаТекЗаказчика=УстановленнаяЦенаБезФормТекЗаказчика; Иначе ЦенаТекЗаказчика=УстановленнаяЦенаТекЗаказчика; КонецЕсли; УстановленнаяЦенаПоДокументамТекЗаказчика=ЦенаТекЗаказчика+ОткатТекЗаказчика*100/90; ТаблицаРасчетнаяМассаОдногоЗаказчика=СоздатьОбъект("ТаблицаЗначений"); ТаблицаРасчетнаяМассаОдногоЗаказчика.Загрузить(тбКонтрагенты.ПолучитьЗначение(ТекСтрокатбКонтрагенты,"тбРасчетнаяМасса")); Рентабельность=РасчитатьРентабельностьЗаказа(ТаблицаРасчетнаяМассаОдногоЗаказчика,УстановленныйОбъемТекЗаказчика,УстановленнаяЦенаТекЗаказчика); КонецЕсли; тбКонтрагенты.УстановитьЗначение(ы,"УстановленныйОбъем",УстановленныйОбъемТекЗаказчика); тбКонтрагенты.УстановитьЗначение(ы,"УстановленнаяЦенаБезФорм",УстановленнаяЦенаБезФормТекЗаказчика); тбКонтрагенты.УстановитьЗначение(ы,"УстановленнаяЦена",УстановленнаяЦенаТекЗаказчика); тбКонтрагенты.УстановитьЗначение(ы,"УстановленнаяЦенаПоДокументам",УстановленнаяЦенаПоДокументамТекЗаказчика); тбКонтрагенты.УстановитьЗначение(ы,"РентабельностьЗаказа",Рентабельность); КонецЦикла; ОбновитьТаблицыДокумента(); КонецПроцедуры //------------------------------------------------------------------------------------------------------------ Процедура ИзмСписокРасчитанныхОбъемов() СделатьВозврат=Нет; ТекСтрока=СписокРасчитанныхОбъемов.ТекущаяСтрока(); Если Проведен()=1 Тогда Предупреждение("Нельзя изменять прод.объем в поведенном документе!"); ТекСтрока=СписокРасчитанныхОбъемов.НайтиЗначение(ОбщийПродажныйОбъем); СделатьВозврат=Да; КонецЕсли; СписокРасчитанныхОбъемов.ТекущаяСтрока(ТекСтрока); Если СделатьВозврат=Да Тогда Возврат; КонецЕсли; ОбщийПродажныйОбъем=СписокРасчитанныхОбъемов.ПолучитьЗначение(СписокРасчитанныхОбъемов.ТекущаяСтрока()); ИзмПродажныйОбъемКотрагентов(); ВспомогПроцедура(тбИсторияДокумента,"Изменения",глПользователь,"ОбщийПродажныйОбъем", "Изменен Продаж.Объем на "+ОбщийПродажныйОбъем); КонецПроцедуры //------------------------------------------------------------------------------------------------------------ Процедура ИзмУстановленнаяЦенаСФормами() Если ОбщийПродажныйОбъем=0 Тогда Предупреждение("Установите продажный объем!"); ИначеЕсли РасчетСделан=0 Тогда Предупреждение("Выполните перерасчет!"); Иначе Если тбКонтрагенты.КоличествоСтрок()=1 Тогда УстановленнаяЦенаТекЗаказчика=УстановленнаяЦена; тбКонтрагенты.УстановитьЗначение(ТекСтрокатбКонтрагенты,"УстановленнаяЦена",УстановленнаяЦенаТекЗаказчика); КонецЕсли; ФормыПродаютсяОтдельноТекЗаказчика=тбКонтрагенты.ПолучитьЗначение(ТекСтрокатбКонтрагенты,"фДругаяСтоимостьФорм"); УстановленныйОбъемТекЗаказчика=тбКонтрагенты.ПолучитьЗначение(ТекСтрокатбКонтрагенты,"УстановленныйОбъем"); ПродажнаяСтоимостьФормТекЗаказчика=тбКонтрагенты.ПолучитьЗначение(ТекСтрокатбКонтрагенты,"ПродажнаяСтоимостьФорм"); УстановленнаяЦенаТекЗаказчика=тбКонтрагенты.ПолучитьЗначение(ТекСтрокатбКонтрагенты,"УстановленнаяЦена"); ОткатТекЗаказчика=тбКонтрагенты.ПолучитьЗначение(ТекСтрокатбКонтрагенты,"Откат"); УстановленнаяЦенаБезФормТекЗаказчика=УстановленнаяЦенаТекЗаказчика-ПродажнаяСтоимостьФормТекЗаказчика/УстановленныйОбъемТекЗаказчика; Если ФормыПродаютсяОтдельноТекЗаказчика=1 Тогда ЦенаТекЗаказчика=УстановленнаяЦенаБезФормТекЗаказчика; Иначе ЦенаТекЗаказчика=УстановленнаяЦенаТекЗаказчика; КонецЕсли; УстановленнаяЦенаПоДокументамТекЗаказчика=ЦенаТекЗаказчика+ОткатТекЗаказчика*100/90; ТаблицаРасчетнаяМассаОдногоЗаказчика=СоздатьОбъект("ТаблицаЗначений"); ТаблицаРасчетнаяМассаОдногоЗаказчика.Загрузить(тбКонтрагенты.ПолучитьЗначение(ТекСтрокатбКонтрагенты,"тбРасчетнаяМасса")); Рентабельность=РасчитатьРентабельностьЗаказа(ТаблицаРасчетнаяМассаОдногоЗаказчика,УстановленныйОбъемТекЗаказчика,УстановленнаяЦенаТекЗаказчика); тбКонтрагенты.УстановитьЗначение(ТекСтрокатбКонтрагенты,"УстановленнаяЦенаБезФорм",УстановленнаяЦенаБезФормТекЗаказчика); тбКонтрагенты.УстановитьЗначение(ТекСтрокатбКонтрагенты,"УстановленнаяЦена",УстановленнаяЦенаТекЗаказчика); тбКонтрагенты.УстановитьЗначение(ТекСтрокатбКонтрагенты,"УстановленнаяЦенаПоДокументам",УстановленнаяЦенаПоДокументамТекЗаказчика); тбКонтрагенты.УстановитьЗначение(ТекСтрокатбКонтрагенты,"РентабельностьЗаказа",Рентабельность); ВспомогПроцедура(тбИсторияДокумента,"Изменения",глПользователь,"УстановленнаяЦена", "Изменен УстановленнаяЦена на "+УстановленнаяЦена); КонецЕсли; ОбновитьТаблицыДокумента(); КонецПроцедуры //------------------------------------------------------------------------------------------------------------ Процедура ИзмФлагДругаяСтоимостьФорм() Если ОбщийПродажныйОбъем=0 Тогда Предупреждение("Не указан продажный объем"); Иначе Если тбКонтрагенты.КоличествоСтрок()=1 Тогда ФормыПродаютсяОтдельноТекЗаказчика=фФормыПродаютсяОтдельно; тбКонтрагенты.УстановитьЗначение(ТекСтрокатбКонтрагенты,"фДругаяСтоимостьФорм",ФормыПродаютсяОтдельноТекЗаказчика); КонецЕсли; УстановленныйОбъемТекЗаказчика=тбКонтрагенты.ПолучитьЗначение(ТекСтрокатбКонтрагенты,"УстановленныйОбъем"); ФормыПродаютсяОтдельноТекЗаказчика=тбКонтрагенты.ПолучитьЗначение(ТекСтрокатбКонтрагенты,"фДругаяСтоимостьФорм"); СебистоимостьПечатныхФормТекЗаказчика=тбКонтрагенты.ПолучитьЗначение(ТекСтрокатбКонтрагенты,"СебистоимостьПечатныхФорм"); ПродажнаяСтоимостьФормТекЗаказчика=тбКонтрагенты.ПолучитьЗначение(ТекСтрокатбКонтрагенты,"ПродажнаяСтоимостьФорм"); УстановленнаяЦенаТекЗаказчика=тбКонтрагенты.ПолучитьЗначение(ТекСтрокатбКонтрагенты,"УстановленнаяЦена"); ОткатТекЗаказчика=тбКонтрагенты.ПолучитьЗначение(ТекСтрокатбКонтрагенты,"Откат"); Если (ФормыПродаютсяОтдельноТекЗаказчика=0) Тогда ПродажнаяСтоимостьФормТекЗаказчика= СебистоимостьПечатныхФормТекЗаказчика; УстановленнаяЦенаБезФормТекЗаказчика=УстановленнаяЦенаТекЗаказчика-ПродажнаяСтоимостьФормТекЗаказчика/УстановленныйОбъемТекЗаказчика; УстановленнаяЦенаПоДокументамТекЗаказчика=УстановленнаяЦенаТекЗаказчика+ОткатТекЗаказчика*100/90; Иначе УстановленнаяЦенаБезФормТекЗаказчика=УстановленнаяЦенаТекЗаказчика-ПродажнаяСтоимостьФормТекЗаказчика/УстановленныйОбъемТекЗаказчика; УстановленнаяЦенаПоДокументамТекЗаказчика=УстановленнаяЦенаБезФормТекЗаказчика+ОткатТекЗаказчика*100/90; КонецЕсли; ПродажнаяСтоимостьФормТекЗаказчика=Окр(ПродажнаяСтоимостьФормТекЗаказчика,2,1); ТаблицаРасчетнаяМассаОдногоЗаказчика=СоздатьОбъект("ТаблицаЗначений"); ТаблицаРасчетнаяМассаОдногоЗаказчика.Загрузить(тбКонтрагенты.ПолучитьЗначение(ТекСтрокатбКонтрагенты,"тбРасчетнаяМасса")); Рентабельность=РасчитатьРентабельностьЗаказа(ТаблицаРасчетнаяМассаОдногоЗаказчика,УстановленныйОбъемТекЗаказчика,УстановленнаяЦенаТекЗаказчика); тбКонтрагенты.УстановитьЗначение(ТекСтрокатбКонтрагенты,"УстановленнаяЦенаБезФорм",УстановленнаяЦенаБезФормТекЗаказчика); тбКонтрагенты.УстановитьЗначение(ТекСтрокатбКонтрагенты,"ПродажнаяСтоимостьФорм",ПродажнаяСтоимостьФормТекЗаказчика); тбКонтрагенты.УстановитьЗначение(ТекСтрокатбКонтрагенты,"УстановленнаяЦенаПоДокументам",УстановленнаяЦенаПоДокументамТекЗаказчика); тбКонтрагенты.УстановитьЗначение(ТекСтрокатбКонтрагенты,"РентабельностьЗаказа",Рентабельность); КонецЕсли; ОбновитьТаблицыДокумента(); КонецПроцедуры //------------------------------------------------------------------------------------------------------------ Процедура ИзмПродажнаяСтоимостьФорм() ФормыПродаютсяОтдельноТекЗаказчика=тбКонтрагенты.ПолучитьЗначение(ТекСтрокатбКонтрагенты,"фДругаяСтоимостьФорм"); СебистоимостьПечатныхФормТекЗаказчика=тбКонтрагенты.ПолучитьЗначение(ТекСтрокатбКонтрагенты,"СебистоимостьПечатныхФорм"); Если тбКонтрагенты.КоличествоСтрок()=1 Тогда ПродажнаяСтоимостьФормТекЗаказчика= ПродажнаяСтоимостьФорм; Если(ПродажнаяСтоимостьФормТекЗаказчика<СебистоимостьПечатныхФормТекЗаказчика) Тогда Предупреждение("Формы не могут продаваться дешевле себистоимости!"); ПродажнаяСтоимостьФормТекЗаказчика= СебистоимостьПечатныхФормТекЗаказчика; КонецЕсли; тбКонтрагенты.УстановитьЗначение(ТекСтрокатбКонтрагенты,"ПродажнаяСтоимостьФорм",ПродажнаяСтоимостьФормТекЗаказчика); КонецЕсли; УстановленнаяЦенаБезФормТекЗаказчика=тбКонтрагенты.ПолучитьЗначение(ТекСтрокатбКонтрагенты,"УстановленнаяЦенаБезФорм"); УстановленныйОбъемТекЗаказчика=тбКонтрагенты.ПолучитьЗначение(ТекСтрокатбКонтрагенты,"УстановленныйОбъем"); ПродажнаяСтоимостьФормТекЗаказчика=тбКонтрагенты.ПолучитьЗначение(ТекСтрокатбКонтрагенты,"ПродажнаяСтоимостьФорм"); ОткатТекЗаказчика=тбКонтрагенты.ПолучитьЗначение(ТекСтрокатбКонтрагенты,"Откат"); Если (ФормыПродаютсяОтдельноТекЗаказчика=1) Тогда УстановленнаяЦенаТекЗаказчика=УстановленнаяЦенаБезФормТекЗаказчика+ПродажнаяСтоимостьФормТекЗаказчика/УстановленныйОбъемТекЗаказчика; УстановленнаяЦенаПоДокументамТекЗаказчика=УстановленнаяЦенаБезФормТекЗаказчика+ОткатТекЗаказчика*100/90; ТаблицаРасчетнаяМассаОдногоЗаказчика=СоздатьОбъект("ТаблицаЗначений"); ТаблицаРасчетнаяМассаОдногоЗаказчика.Загрузить(тбКонтрагенты.ПолучитьЗначение(ТекСтрокатбКонтрагенты,"тбРасчетнаяМасса")); Рентабельность=РасчитатьРентабельностьЗаказа(ТаблицаРасчетнаяМассаОдногоЗаказчика,УстановленныйОбъемТекЗаказчика,УстановленнаяЦенаТекЗаказчика); тбКонтрагенты.УстановитьЗначение(ТекСтрокатбКонтрагенты,"УстановленнаяЦена",УстановленнаяЦенаТекЗаказчика); тбКонтрагенты.УстановитьЗначение(ТекСтрокатбКонтрагенты,"УстановленнаяЦенаПоДокументам",УстановленнаяЦенаПоДокументамТекЗаказчика); тбКонтрагенты.УстановитьЗначение(ТекСтрокатбКонтрагенты,"РентабельностьЗаказа",Рентабельность); КонецЕсли; ОбновитьТаблицыДокумента(); КонецПроцедуры //------------------------------------------------------------------------------------------------------------ Процедура ИзмНестандартОбъем() Если ОбщийПродажныйОбъем=0 Тогда Предупреждение("Продажный объем = 0 !"); ИначеЕсли РасчетСделан=0 Тогда Предупреждение("Выполните перерасчет!"); Иначе Если тбКонтрагенты.КоличествоСтрок()=1 Тогда НестандартОбъемТекЗаказчика=НестандартОбъем; тбКонтрагенты.УстановитьЗначение(ТекСтрокатбКонтрагенты,"НестандартныйОбъем",НестандартОбъемТекЗаказчика); КонецЕсли; ВспомогПроцедура(тбИсторияДокумента,"Изменения",глПользователь,"НестандартныйОбъем", "Изменен НестандартныйОбъем на "+НестандартОбъем); КонецЕсли; ОбновитьТаблицыДокумента(); КонецПроцедуры //------------------------------------------------------------------------------------------------------------ Функция НакруткаНаФормах() Если (тбКонтрагенты.КоличествоСтрок()=0) Тогда Возврат 0; КонецЕсли; СебистоимостьПечатныхФормТекЗаказчика=тбКонтрагенты.ПолучитьЗначение(ТекСтрокатбКонтрагенты,"СебистоимостьПечатныхФорм"); ПродажнаяСтоимостьФормТекЗаказчика=тбКонтрагенты.ПолучитьЗначение(ТекСтрокатбКонтрагенты,"ПродажнаяСтоимостьФорм"); НакруткаНаФормах= ПродажнаяСтоимостьФормТекЗаказчика-СебистоимостьПечатныхФормТекЗаказчика; Возврат НакруткаНаФормах; КонецФункции //------------------------------------------------------------------------------------------------------------ Функция ВернутьНакруткуНаФормахСтрокой() Если (тбКонтрагенты.КоличествоСтрок()=0) Тогда Возврат ""; КонецЕсли; Если (тбКонтрагенты.КоличествоСтрок()>1) Тогда Возврат ""; КонецЕсли; НакруткаНаФормах=НакруткаНаФормах(); Если НакруткаНаФормах<>0 Тогда НакруткаНаФормахСтрокой="Дельта = "+ НакруткаНаФормах; Иначе НакруткаНаФормахСтрокой=""; КонецЕсли; Возврат НакруткаНаФормахСтрокой; КонецФункции //------------------------------------------------------------------------------------------------------------ Функция СуммаЗаказаМинусСебистоимость(УстановленныйОбъемТекЗаказчика,УстановленнаяЦенаТекЗаказчика,РасчетнаяТаблицаТекЗаказчика) Если РасчетСделан=0 Тогда Возврат 0; КонецЕсли; Если (ОбщийПродажныйОбъем=0) Тогда Возврат 0; КонецЕсли; НомСтр=""; Если КакСчитаем=СчитаемОтМассы Тогда НазвКолонки="Масса"; ИначеЕсли КакСчитаем=СчитаемОтТиража Тогда НазвКолонки="Тираж"; Иначе Возврат 0; КонецЕсли; Если ОбщаяРасчетнаяТаблица.НайтиЗначение(ОбщийПродажныйОбъем,НомСтр,НазвКолонки)=0 Тогда Возврат 0; КонецЕсли; Если РасчетнаяТаблицаТекЗаказчика.КоличествоСтрок()< НомСтр Тогда Возврат 0; КонецЕсли; СебистоимостьТекЗаказчика=РасчетнаяТаблицаТекЗаказчика.ПолучитьЗначение(НомСтр,"Себистоимость"); Дельта=УстановленнаяЦенаТекЗаказчика*УстановленныйОбъемТекЗаказчика-СебистоимостьТекЗаказчика; Возврат Дельта; КонецФункции //------------------------------------------------------------------------------------------------------------ Функция ВернутьПрибыльСтрокой() //Если РасчетСделан=0 Тогда // ПрибыльСтрокой=""; //ИначеЕсли (ОбщийПродажныйОбъем=0)ИЛИ(УстановленнаяЦена=0) Тогда // ПрибыльСтрокой=""; //Иначе // Дельта=Окр(СуммаЗаказаМинусСебистоимость(),2,1); // ПрибыльСтрокой="Прибыль от заказа = "+Дельта; //КонецЕсли; // //Возврат ПрибыльСтрокой; КонецФункции //------------------------------------------------------------------------------------------------------------ Процедура КнопкаПрибыль() Список=СоздатьОбъект("АссоциативныйВектор"); тб=СоздатьОбъект("ИндексированнаяТаблица"); тб.НоваяКолонка("Наим"); тб.НоваяКолонка("Значение"); Для НомСтр=1 По тбКонтрагенты.КоличествоСтрок() Цикл ТекЗаказчик=тбКонтрагенты.ПолучитьЗначение(НомСтр,"Контрагент"); УстановленныйОбъемТекЗаказчика=тбКонтрагенты.ПолучитьЗначение(НомСтр,"УстановленныйОбъем"); СебистоимостьПечатныхФормТекЗаказчика=тбКонтрагенты.ПолучитьЗначение(НомСтр,"СебистоимостьПечатныхФорм"); ПродажнаяСтоимостьФормТекЗаказчика=тбКонтрагенты.ПолучитьЗначение(НомСтр,"ПродажнаяСтоимостьФорм"); УстановленнаяЦенаТекЗаказчика=тбКонтрагенты.ПолучитьЗначение(НомСтр,"УстановленнаяЦена"); УстановленнаяЦенаБезФормТекЗаказчика=тбКонтрагенты.ПолучитьЗначение(НомСтр,"УстановленнаяЦенаБезФорм"); РасчетнаяТаблицаТекЗаказчика=тбКонтрагенты.ПолучитьЗначение(НомСтр,"тбРасчетнаяМасса"); СуммаЗаказаМинусСебистоимость=СуммаЗаказаМинусСебистоимость(УстановленныйОбъемТекЗаказчика,УстановленнаяЦенаТекЗаказчика,РасчетнаяТаблицаТекЗаказчика); Дельта=Окр(СуммаЗаказаМинусСебистоимость,2,1); тб.НоваяСтрока(); тб.Наим= "Заказчик"; тб.Значение=ТекЗаказчик.Наименование; тб.НоваяСтрока(); тб.Наим= "Продаж.Объем"; тб.Значение=УстановленныйОбъемТекЗаказчика; тб.НоваяСтрока(); тб.Наим= "Прод.Цена без форм"; тб.Значение=УстановленнаяЦенаБезФормТекЗаказчика; тб.НоваяСтрока(); тб.Наим= "Прод.Цена с формами"; тб.Значение=УстановленнаяЦенаТекЗаказчика; тб.НоваяСтрока(); тб.Наим= "Себистоимость элемента"; Если Дельта<0 Тогда ЗначениеСтрокой=" - "+(Дельта*(-1)); Иначе ЗначениеСтрокой=""+(Дельта); КонецЕсли; тб.Значение=ЗначениеСтрокой; тб.НоваяСтрока(); тб.Наим= "Формы"; тб.Значение=ПродажнаяСтоимостьФормТекЗаказчика; тб.НоваяСтрока(); тб.Наим= "Менеджер"; тб.Значение=Менеджер.Наименование; КонецЦикла; Список.Добавить("Таблица","Заголовок"); Список.Добавить(тб,"Таблица"); ОткрытьФорму("Обработка.ВывестиТабличноеПоле",Список); КонецПроцедуры //------------------------------------------------------------------------------------------------------------ Процедура ЗаполнитьСпискиРасчитанныхОбъемов() СписокРасчитанныхОбъемов.УдалитьВсе(); СписокРасчитанныхОбъемов.ДобавитьЗначение(0); Если КакСчитаем=СчитаемОтМассы Тогда НазвКолонки="Масса"; ИначеЕсли КакСчитаем=СчитаемОтТиража Тогда НазвКолонки="Тираж"; КонецЕсли; Если КакСчитаем<>0 Тогда ОбщаяРасчетнаяТаблица.ВыбратьСтроки(); Пока ОбщаяРасчетнаяТаблица.ПолучитьСтроку()=1 Цикл Объем=ОбщаяРасчетнаяТаблица.ПолучитьЗначение(ОбщаяРасчетнаяТаблица.НомерСтроки,НазвКолонки); СписокРасчитанныхОбъемов.ДобавитьЗначение(Объем); КонецЦикла; КонецЕсли; ТекСтр=СписокРасчитанныхОбъемов.НайтиЗначение(ОбщийПродажныйОбъем); Если ТекСтр =0 Тогда ОбщийПродажныйОбъем=0; ТекСтр=СписокРасчитанныхОбъемов.НайтиЗначение(ОбщийПродажныйОбъем); КонецЕсли; СписокРасчитанныхОбъемов.ТекущаяСтрока(ТекСтр); КонецПроцедуры //------------------------------------------------------------------------------------------------------------ Функция ПроверкаЗаполненияФормы() ЗаполненоЛи=1; ОбщееСообщение=""; ПереводКаретки=" |"; Если КоличествоСтрок()=0 Тогда Сообщение="Не задан дизайн;"; ОбщееСообщение=ОбщееСообщение+Сообщение+ПереводКаретки; ЗаполненоЛи=0; Иначе ИТСтрокиДокумента.ВНачало(); Пока ИТСтрокиДокумента.СледующаяСтрока()=1 Цикл Если (ИТСтрокиДокумента.ШиринаДизайна<=0)ИЛИ(ИТСтрокиДокумента.ВысотаДизайна<=0) Тогда Сообщение="Для дизайна "+ИТСтрокиДокумента.Дизайн+" не заданы размеры;"; ОбщееСообщение=ОбщееСообщение+Сообщение+ПереводКаретки; ЗаполненоЛи=0; КонецЕсли; Если ИТСтрокиДокумента.КолДорожек<1 Тогда Сообщение="Для дизайна "+ИТСтрокиДокумента.Дизайн+"не заданы кол-во дорожек"; ОбщееСообщение=ОбщееСообщение+Сообщение+ПереводКаретки; ЗаполненоЛи=0; КонецЕсли; КонецЦикла; КонецЕсли; Если ЗаполненоЛи=0 Тогда Возврат ОбщееСообщение; КонецЕсли; Если КвоДорожекНаВалу=0 Тогда Сообщение="Не указано к-во дорожек на валу"; ЗаполненоЛи=0; Возврат Сообщение; КонецЕсли; Если ВернутьШагПечати(0)=0 Тогда Сообщение="Не правильно указано расположение рисунков на валу"; ЗаполненоЛи=0; Возврат Сообщение; КонецЕсли; Если (фЭкструзия=0)И(фПечать=0)И(фЛаминация=0)И(фПакетоделание=0)И(фБабинорезка=0)И(фФлексоформа=0)Тогда ОбщееСообщение="Не задана не одна операция"; Возврат ОбщееСообщение; КонецЕсли; Если (фПечать=1)Тогда Если (ПустоеЗначение(НормыРасчета.ОсновнойМатериал)=1) Тогда Сообщение="Не задан материал для печати;"; ОбщееСообщение=ОбщееСообщение+Сообщение+ПереводКаретки; ЗаполненоЛи=0; КонецЕсли; Если НормыРасчета.ГрамматураОсновногоМатериала=0 Тогда Сообщение="Не задана Плотность материала для печати;"; ОбщееСообщение=ОбщееСообщение+Сообщение+ПереводКаретки; ЗаполненоЛи=0; КонецЕсли; Если НормыРасчета.ШиринаСырьяОсновногоМатериала=0 Тогда Сообщение="Не задана Ширина Сырья Материала Печати;"; ОбщееСообщение=ОбщееСообщение+Сообщение+ПереводКаретки; ЗаполненоЛи=0; КонецЕсли; ОбщаяТаблицаКрасок=НормыРасчета.ТаблицаКрасок(); Если ОбщаяТаблицаКрасок.КоличествоСтрок()=0 Тогда Сообщение="Не заполнена таблица красок;"; ОбщееСообщение=ОбщееСообщение+Сообщение+ПереводКаретки; ЗаполненоЛи=0; Иначе Если ОбщаяТаблицаКрасок.Итог("ПроцентЗапечатки")<1 Тогда Сообщение="Процент заполнения красок = 0;"; ОбщееСообщение=ОбщееСообщение+Сообщение+ПереводКаретки; ЗаполненоЛи=0; КонецЕсли; КонецЕсли; Если (фЛаминация=1)Тогда Если (ПустоеЗначение(НормыРасчета.МатериалЛаминации1)=1)Тогда Сообщение="Не задан материал 1-вой ламинации;"; ОбщееСообщение=ОбщееСообщение+Сообщение+ПереводКаретки; ЗаполненоЛи=0; КонецЕсли; Если НормыРасчета.ГрамматураМатериалаЛаминации1=0 Тогда Сообщение="Не задана Плотность материала 1-вой ламинации;"; ОбщееСообщение=ОбщееСообщение+Сообщение+ПереводКаретки; ЗаполненоЛи=0; КонецЕсли; Если НормыРасчета.ШиринаСырьяМатериалаЛаминации1=0 Тогда Сообщение="Не задана Ширина Сырья материала 1-вой ламинации;"; ОбщееСообщение=ОбщееСообщение+Сообщение+ПереводКаретки; ЗаполненоЛи=0; КонецЕсли; КонецЕсли; КонецЕсли; Если (фПечать=0)И(фЛаминация=1)Тогда //Ширина Если (ПустоеЗначение(НормыРасчета.ОсновнойМатериал)=1)Тогда Сообщение="Не задан материал для основного слоя;"; ОбщееСообщение=ОбщееСообщение+Сообщение+ПереводКаретки; ЗаполненоЛи=0; КонецЕсли; Если НормыРасчета.ГрамматураОсновногоМатериала =0 Тогда Сообщение="Не задана Плотность материала для основного слоя;"; ОбщееСообщение=ОбщееСообщение+Сообщение+ПереводКаретки; ЗаполненоЛи=0; КонецЕсли; Если НормыРасчета.ШиринаСырьяОсновногоМатериала=0 Тогда Сообщение="Не задана Ширина Сырья материала для основного слоя;"; ОбщееСообщение=ОбщееСообщение+Сообщение+ПереводКаретки; ЗаполненоЛи=0; КонецЕсли; Если (ПустоеЗначение(НормыРасчета.МатериалЛаминации1)=1) Тогда Сообщение="Не задан материал 1-вой ламинации;"; ОбщееСообщение=ОбщееСообщение+Сообщение+ПереводКаретки; ЗаполненоЛи=0; КонецЕсли; Если НормыРасчета.ГрамматураМатериалаЛаминации1=0 Тогда Сообщение="Не задана Плотность материала 1-вой ламинации;"; ОбщееСообщение=ОбщееСообщение+Сообщение+ПереводКаретки; ЗаполненоЛи=0; КонецЕсли; Если НормыРасчета.ШиринаСырьяМатериалаЛаминации1=0 Тогда Сообщение="Не задана Ширина Сырья материала 1-вой ламинации;"; ОбщееСообщение=ОбщееСообщение+Сообщение+ПереводКаретки; ЗаполненоЛи=0; КонецЕсли; КонецЕсли; Размер=НормыРасчета.ОбщаяШиринаВсехДизайновВОдномШагеПечати(); Если (фПечать=0)И(фПакетоделание=0)И(фБабинорезка=0) И (фЛаминация=1)Тогда //только одна ламинация ВалМеньшеШириныПродукции=1; НасколькоВалБольшеШириныДорожек=0; Иначе ВалМеньшеШириныПродукции=0; НасколькоВалБольшеШириныДорожек=НормыРасчета.НормаТехОтходовПроцесса("Справочник","НасколькоВалБольшеШириныДорожек"); КонецЕсли; Если (фЛаминация=1)Тогда Если фПодписьЛаминаторщика=1 Тогда Иначе Если (ШиринаРезиновогоВала<(Размер+НасколькоВалБольшеШириныДорожек))И(ВалМеньшеШириныПродукции=0) Тогда Сообщение="Не правильно указана ширина вала для ламинации"; ОбщееСообщение=ОбщееСообщение+Сообщение+ПереводКаретки; ЗаполненоЛи=0; КонецЕсли; КонецЕсли; КонецЕсли; Если (фПечать=1) И(фЛаминация=0) Тогда Если ПустоеЗначение(НормыРасчета.ОсновнойМатериал)=0 Тогда Если НормыРасчета.ШиринаСырьяОсновногоМатериала < Размер Тогда Сообщение="Не правильно указана ширина материала для печати"; ОбщееСообщение=ОбщееСообщение+Сообщение+ПереводКаретки; ЗаполненоЛи=0; КонецЕсли; КонецЕсли; ИначеЕсли (фЛаминация=1) Тогда Если ПустоеЗначение(НормыРасчета.ОсновнойМатериал)=0 Тогда Если фПодписьЛаминаторщика=1 Тогда Если НормыРасчета.ШиринаСырьяОсновногоМатериала < МинШиринаСырьяОснМатериала Тогда Сообщение="Не правильно указана ширина материала для"; Если фПечать=1 Тогда Сообщение=Сообщение+" печати"; Иначе Сообщение=Сообщение+" основного слоя"; КонецЕсли; ОбщееСообщение=ОбщееСообщение+Сообщение+ПереводКаретки; ЗаполненоЛи=0; КонецЕсли; Иначе Если НормыРасчета.ШиринаСырьяОсновногоМатериала < Размер Тогда Сообщение="Не правильно указана ширина материала для"; Если фПечать=1 Тогда Сообщение=Сообщение+" печати"; Иначе Сообщение=Сообщение+" основного слоя"; КонецЕсли; ОбщееСообщение=ОбщееСообщение+Сообщение+ПереводКаретки; ЗаполненоЛи=0; КонецЕсли; КонецЕсли; КонецЕсли; Если ПустоеЗначение(НормыРасчета.МатериалЛаминации1)=0 Тогда Если фПодписьЛаминаторщика=1 Тогда Если НормыРасчета.ШиринаСырьяМатериалаЛаминации1 < МинШиринаСырьяМатериалаЛаминации1 Тогда Сообщение="Не правильно указана ширина материала для слоя ламинации 1"; ОбщееСообщение=ОбщееСообщение+Сообщение+ПереводКаретки; ЗаполненоЛи=0; КонецЕсли; Иначе Если НормыРасчета.ШиринаСырьяМатериалаЛаминации1 < Размер+5 Тогда Сообщение="Не правильно указана ширина материала для слоя ламинации 1"; ОбщееСообщение=ОбщееСообщение+Сообщение+ПереводКаретки; ЗаполненоЛи=0; КонецЕсли; КонецЕсли; КонецЕсли; Если ПустоеЗначение(НормыРасчета.МатериалЛаминации2)=0 Тогда Если фПодписьЛаминаторщика=1 Тогда Если НормыРасчета.ШиринаСырьяМатериалаЛаминации2 < МинШиринаСырьяМатериалаЛаминации2 Тогда Сообщение="Не правильно указана ширина материала для слоя ламинации 2"; ОбщееСообщение=ОбщееСообщение+Сообщение+ПереводКаретки; ЗаполненоЛи=0; КонецЕсли; Иначе Если НормыРасчета.ШиринаСырьяМатериалаЛаминации2 < Размер+5 Тогда Сообщение="Не правильно указана ширина материала для слоя ламинации 2"; ОбщееСообщение=ОбщееСообщение+Сообщение+ПереводКаретки; ЗаполненоЛи=0; КонецЕсли; КонецЕсли; КонецЕсли; КонецЕсли; Если (фПечать=0)И(фЛаминация=0)И(фПакетоделание=1) Тогда Если (ПустоеЗначение(НормыРасчета.ОсновнойМатериал)=1)Тогда Сообщение="Не задан материал для основного слоя;"; ОбщееСообщение=ОбщееСообщение+Сообщение+ПереводКаретки; ЗаполненоЛи=0; КонецЕсли; Если НормыРасчета.ГрамматураОсновногоМатериала =0 Тогда Сообщение="Не задана Плотность материала для основного слоя;"; ОбщееСообщение=ОбщееСообщение+Сообщение+ПереводКаретки; ЗаполненоЛи=0; КонецЕсли; КонецЕсли; Если фФлексоформа=1 Тогда КонецЕсли; Если фЭкструзия=1 Тогда КонецЕсли;// Если ЗаполненоЛи=0 Тогда Возврат ОбщееСообщение; Иначе Возврат 0; КонецЕсли; КонецФункции //------------------------------------------------------------------------------------------------------------ Функция РасчитатьРентабельностьЗаказа(ТаблицаРасчетнаяМасса,УстановленныйОбъемТекЗаказчика,УстановленнаяЦенаЗаказа) Если РасчетСделан=0 Тогда РентабельностьЗаказа=""; Возврат РентабельностьЗаказа; КонецЕсли; Если (ОбщийПродажныйОбъем=0)ИЛИ(УстановленнаяЦенаЗаказа=0) ИЛИ(УстановленныйОбъемТекЗаказчика=0)Тогда РентабельностьЗаказа=""; Возврат РентабельностьЗаказа; КонецЕсли; НомСтр=""; Если КакСчитаем=СчитаемОтМассы Тогда НазвКолонки="Масса"; ИначеЕсли КакСчитаем=СчитаемОтТиража Тогда НазвКолонки="Тираж"; Иначе РентабельностьЗаказа=""; Возврат РентабельностьЗаказа; КонецЕсли; Если ОбщаяРасчетнаяТаблица.НайтиЗначение(ОбщийПродажныйОбъем,НомСтр,НазвКолонки)=0 Тогда РентабельностьЗаказа=""; Возврат РентабельностьЗаказа; КонецЕсли; ТаблицаРасчетнаяМасса.ПолучитьСтрокуПоНомеру(НомСтр); Себистоимость=ТаблицаРасчетнаяМасса.Себистоимость; Масса=ТаблицаРасчетнаяМасса.Масса; Тираж=ТаблицаРасчетнаяМасса.Тираж; Если (Масса=0)или (Тираж=0) Тогда РасчетСделан=0; Возврат РентабельностьЗаказа; КонецЕсли; СтоимостьНеРентабельно=ТаблицаРасчетнаяМасса.ПродСтоимостьНеРентабельно; ЦенаЗа1КГНеРентабельно= СтоимостьНеРентабельно/Масса; ЦенаЗа1000ШТНеРентабельно=СтоимостьНеРентабельно/Тираж; СтоимостьПрибыльно=ТаблицаРасчетнаяМасса.ПродСтоимостьПрибыльно; ЦенаЗа1КГПрибыльно= СтоимостьПрибыльно/Масса; ЦенаЗа1000ШТПрибыльно=СтоимостьПрибыльно/Тираж; СтоимостьПремиально=ТаблицаРасчетнаяМасса.ПродСтоимостьПремиально; ЦенаЗа1КГПремиально= СтоимостьПремиально/Масса; ЦенаЗа1000ШТПремиально=СтоимостьПремиально/Тираж; Если КакСчитаем=1 Тогда ЦенаНеРентабельно= Окр(ЦенаЗа1КГНеРентабельно,2,1); ЦенаПрибыльно= Окр(ЦенаЗа1КГПрибыльно,2,1); ЦенаПремиально= Окр(ЦенаЗа1КГПремиально,2,1); ИначеЕсли КакСчитаем=2 Тогда ЦенаНеРентабельно= Окр(ЦенаЗа1000ШТНеРентабельно,2,1); ЦенаПрибыльно= Окр(ЦенаЗа1000ШТПрибыльно,2,1); ЦенаПремиально= Окр(ЦенаЗа1000ШТПремиально,2,1); Иначе КонецЕсли; Если (УстановленнаяЦенаЗаказа<ЦенаНеРентабельно) Тогда РентабельностьЗаказа=Перечисление.Рентабельность.НижеНеРентабельно; ИначеЕсли (УстановленнаяЦенаЗаказа>=ЦенаНеРентабельно)И(УстановленнаяЦенаЗаказа<ЦенаПрибыльно) Тогда РентабельностьЗаказа=Перечисление.Рентабельность.НеРентабельно; ИначеЕсли (УстановленнаяЦенаЗаказа>=ЦенаПрибыльно)И(УстановленнаяЦенаЗаказа<ЦенаПремиально) Тогда РентабельностьЗаказа=Перечисление.Рентабельность.Прибыльно; ИначеЕсли (УстановленнаяЦенаЗаказа=ЦенаПремиально) Тогда РентабельностьЗаказа=Перечисление.Рентабельность.Премиально; ИначеЕсли (УстановленнаяЦенаЗаказа>ЦенаПремиально) Тогда РентабельностьЗаказа=Перечисление.Рентабельность.ВышеПремиально; КонецЕсли; Возврат РентабельностьЗаказа; КонецФункции //------------------------------------------------------------------------------------------------------------ Функция ПолучитьРентабельностьЦеныСтрокой(РентабельностьТекЗаказчика) Если РасчетСделан=0 Тогда Возврат ""; КонецЕсли; Если (ОбщийПродажныйОбъем=0) Тогда Возврат ""; КонецЕсли; Если ПустоеЗначение(РентабельностьТекЗаказчика)=1 Тогда Возврат ""; КонецЕсли; Если (РентабельностьТекЗаказчика=Перечисление.Рентабельность.НижеНеРентабельно) Тогда Возврат "Ниже нерентабельной"; ИначеЕсли (РентабельностьТекЗаказчика=Перечисление.Рентабельность.НеРентабельно) Тогда Возврат "Нерентабельная"; ИначеЕсли (РентабельностьТекЗаказчика=Перечисление.Рентабельность.Прибыльно) Тогда Возврат "Прибыльная"; ИначеЕсли (РентабельностьТекЗаказчика=Перечисление.Рентабельность.Премиально) Тогда Возврат "Премиальная"; ИначеЕсли (РентабельностьТекЗаказчика=Перечисление.Рентабельность.ВышеПремиально) Тогда Возврат "Выше премиальной"; КонецЕсли; КонецФункции //------------------------------------------------------------------------------------------------------------ Функция ПолучитьРентабельностьЦеныСтрокойТекЗаказчика() Если РасчетСделан=0 Тогда Возврат ""; КонецЕсли; Если тбКонтрагенты.КоличествоСтрок()>1 Тогда Возврат ""; КонецЕсли; Попытка УстановленныйОбъемТекЗаказчика=тбКонтрагенты.ПолучитьЗначение(ТекСтрокатбКонтрагенты,"УстановленныйОбъем"); УстановленнаяЦенаТекЗаказчика=тбКонтрагенты.ПолучитьЗначение(ТекСтрокатбКонтрагенты,"УстановленнаяЦена"); РентабельностьТекЗаказчика=тбКонтрагенты.ПолучитьЗначение(ТекСтрокатбКонтрагенты,"РентабельностьЗаказа"); Если (ОбщийПродажныйОбъем=0)ИЛИ(УстановленныйОбъемТекЗаказчика=0)ИЛИ(УстановленнаяЦенаТекЗаказчика=0) Тогда Возврат ""; КонецЕсли; Если ПустоеЗначение(РентабельностьТекЗаказчика)=1 Тогда Возврат ""; КонецЕсли; Если (РентабельностьТекЗаказчика=Перечисление.Рентабельность.НижеНеРентабельно) Тогда Возврат "Ниже нерентабельной"; ИначеЕсли (РентабельностьТекЗаказчика=Перечисление.Рентабельность.НеРентабельно) Тогда Возврат "Нерентабельная"; ИначеЕсли (РентабельностьТекЗаказчика=Перечисление.Рентабельность.Прибыльно) Тогда Возврат "Прибыльная"; ИначеЕсли (РентабельностьТекЗаказчика=Перечисление.Рентабельность.Премиально) Тогда Возврат "Премиальная"; ИначеЕсли (РентабельностьТекЗаказчика=Перечисление.Рентабельность.ВышеПремиально) Тогда Возврат "Выше премиальной"; КонецЕсли; Исключение Возврат ""; КонецПопытки; КонецФункции //------------------------------------------------------------------------------------------------------------ Процедура ЗаполнитьТаблицыДляЭкономиста(МассаИлиТираж=1000) Далее //------------------------------------------------------------------------------------------------------------ Процедура СделатьРасчет(НаТекущуюДату=0) Если НаТекущуюДату=1 Тогда ДатаДляЭкономистов=ТекущаяДата(); КонецЕсли; СохранитьПредАтрибутыИТаблицы(тбКонтрагенты); Если фПечать=1 Тогда ИТСтрокиДокумента.ВНачало(); Пока ИТСтрокиДокумента.СледующаяСтрока()=1 Цикл Если ИТСтрокиДокумента.РазверткаДизайна=0 Тогда ТекстПредупреждения= "Не выбрана развертка!"+РазделительСтрок+"Обратитесь к технологу!"; Предупреждение(ТекстПредупреждения); Возврат; КонецЕсли; КонецЦикла; КонецЕсли; НелзяРасчитывать=0; Если ПустоеЗначение(ОсновнойМатериал)=0 Тогда ЦенаАктуальна = ВернутьАктуальностьЦены(ОсновнойМатериал); Если ЦенаАктуальна=0 Тогда ТекстПредупреждения=("Для "+ОсновнойМатериал+" не установлена актуальная цена"); Предупреждение(ТекстПредупреждения); НелзяРасчитывать=1; КонецЕсли; КонецЕсли; Если ПустоеЗначение(МатериалЛаминации1)=0 Тогда ЦенаАктуальна = ВернутьАктуальностьЦены(МатериалЛаминации1); Если ЦенаАктуальна=0 Тогда ТекстПредупреждения=("Для "+МатериалЛаминации1+" не установлена актуальная цена"); Предупреждение(ТекстПредупреждения); НелзяРасчитывать=1; КонецЕсли; КонецЕсли; Если ПустоеЗначение(МатериалЛаминации2)=0 Тогда ЦенаАктуальна = ВернутьАктуальностьЦены(МатериалЛаминации2); Если ЦенаАктуальна=0 Тогда ТекстПредупреждения=("Для "+МатериалЛаминации2+" не установлена актуальная цена"); Предупреждение(ТекстПредупреждения); НелзяРасчитывать=1; КонецЕсли; КонецЕсли; //ОбновитьЦены(); ОбновитьТаблицыДокумента(); Если НелзяРасчитывать=1 Тогда Возврат; КонецЕсли; Если фПечать=1 Тогда ВозвратнаяСтрока=ПроверкаЗаполненияКрасок(); Если ПустоеЗначение(ВозвратнаяСтрока)=0 Тогда ТекстПредупреждения= ВозвратнаяСтрока+" |Продолжить?"; Ответ=Вопрос(ТекстПредупреждения,"ОК+Отмена",60); Если Ответ<>"ОК" Тогда Возврат; КонецЕсли; КонецЕсли; КонецЕсли; ОбновитьТаблицыДокумента(); ПредупрСтрока=ПроверкаЗаполненияФормы(); Если ПредупрСтрока<>0 Тогда Предупреждение(ПредупрСтрока,100); СтатусВозврата(0); Возврат; КонецЕсли; ОбъектП.ОткрытьОкноСообщения("Выполняется расчет"); КонтекстФормы=глВернутьКонтекст(Контекст); Если ОбщаяРасчетнаяТаблица.КоличествоСтрок()>0 Тогда МассаДляПереклейки=ОбщаяРасчетнаяТаблица.ПолучитьЗначение(1,"Масса"); ТиражДляПереклейки=ОбщаяРасчетнаяТаблица.ПолучитьЗначение(1,"Тираж"); Иначе МассаДляПереклейки=0; ТиражДляПереклейки=0; КонецЕсли; НормыРасчета.МассаДляПереклейки=МассаДляПереклейки; НормыРасчета.ТиражДляПереклейки=ТиражДляПереклейки; НормыРасчета.УстановитьДокумент(КонтекстФормы); НормыРасчета.РасчитатьВесТысячи(); РасчетСтоимости.УстановитьДокумент(КонтекстФормы,НормыРасчета); ОбщаяГрамматураПродукции= НормыРасчета.ОбщаяГрамматураПродукции; ВыбратьСтроки(); Пока ПолучитьСтроку()=1 Цикл Вес1ТысячиПродукции=НормыРасчета.Вес1ТысячиПродукции(Дизайн); КоэфДизайнаВЗаказе=НормыРасчета.КоэфициентДизайнаВЗаказе(Дизайн); КонецЦикла; Для НС=1 По тбКонтрагенты.КоличествоСтрок() Цикл ТекКонтрагент=тбКонтрагенты.ПолучитьЗначение(НС,"Контрагент"); КоефициентОтОбщегоЗаказаТекКонтрагента=РасчетСтоимости.КоефициентОтОбщегоЗаказа(ТекКонтрагент); СебистоимостьПечатныхФормТекКонтрагента=РасчетСтоимости.СебистоимостьПечатныхФорм(ТекКонтрагент); Если КоефициентОтОбщегоЗаказаТекКонтрагента=0 Тогда Предупреждение("Для "+ТекКонтрагент+" не указаны дизайны!"); КонецЕсли; ТаблицаРасчетнаяМасса=СоздатьТаблицуРасчетнаяМасса(); ТаблицаРасчетнаяМасса.КоличествоСтрок(ОбщаяРасчетнаяТаблица.КоличествоСтрок()); тбКонтрагенты.УстановитьЗначение(НС,"тбРасчетнаяМасса",ТаблицаРасчетнаяМасса); тбКонтрагенты.УстановитьЗначение(НС,"КоефициентОтОбщегоЗаказа",КоефициентОтОбщегоЗаказаТекКонтрагента); тбКонтрагенты.УстановитьЗначение(НС,"СебистоимостьПечатныхФорм",СебистоимостьПечатныхФормТекКонтрагента); УстановленныйОбъемТекКонтрагента=ОбщийПродажныйОбъем*КоефициентОтОбщегоЗаказаТекКонтрагента; тбКонтрагенты.УстановитьЗначение(НС,"УстановленныйОбъем",УстановленныйОбъемТекКонтрагента); ФормыПродаютсяОтдельноТекКонтрагента=тбКонтрагенты.ПолучитьЗначение(НС,"фДругаяСтоимостьФорм"); УстановленнаяЦенаТекКонтрагента=тбКонтрагенты.ПолучитьЗначение(НС,"УстановленнаяЦена"); ПродажнаяСтоимостьФормТекЗаказчика=тбКонтрагенты.ПолучитьЗначение(НС,"ПродажнаяСтоимостьФорм"); Если (ФормыПродаютсяОтдельноТекКонтрагента<>1) Тогда ПродажнаяСтоимостьФормТекЗаказчика= СебистоимостьПечатныхФормТекКонтрагента; КонецЕсли; Если ПродажнаяСтоимостьФормТекЗаказчика<СебистоимостьПечатныхФормТекКонтрагента Тогда ПродажнаяСтоимостьФормТекЗаказчика=СебистоимостьПечатныхФормТекКонтрагента; КонецЕсли; Если (ОбщийПродажныйОбъем<>0)И(УстановленныйОбъемТекКонтрагента<>0)И (УстановленнаяЦенаТекКонтрагента<>0) Тогда УстановленнаяЦенаБезФормТекЗаказчика=УстановленнаяЦенаТекКонтрагента-ПродажнаяСтоимостьФормТекЗаказчика/УстановленныйОбъемТекКонтрагента; КонецЕсли; тбКонтрагенты.УстановитьЗначение(НС,"ПродажнаяСтоимостьФорм",ПродажнаяСтоимостьФормТекЗаказчика); тбКонтрагенты.УстановитьЗначение(НС,"УстановленнаяЦенаБезФорм",УстановленнаяЦенаБезФормТекЗаказчика); КонецЦикла; ОбщаяРасчетнаяТаблица.ВыбратьСтроки(); Пока ОбщаяРасчетнаяТаблица.ПолучитьСтроку()=1 Цикл ОбъемЗаказа=ОбщаяРасчетнаяТаблица.Масса; ТиражЗаказа=ОбщаяРасчетнаяТаблица.Тираж; Если (ОбъемЗаказа=0)и(ТиражЗаказа=0) Тогда Продолжить; КонецЕсли; НормыРасчета.МассаПриладки=ОбъемЗаказа; НормыРасчета.ТиражПриладки=ТиражЗаказа; НормыРасчета.ВыполнитьРасчетНорм(); ОбщаяРасчетнаяТаблица.Масса=НормыРасчета.МассаПриладки; ОбщаяРасчетнаяТаблица.Тираж=НормыРасчета.ТиражПриладки; РасчетСтоимости.ВыполнитьРасчет(); ОбщаяРасчетнаяТаблица.НормаОсновногоМатериала = НормыРасчета.РасходОсновногоМатериала(); ОбщаяРасчетнаяТаблица.НормаМатериалаЛаминации1 = НормыРасчета.РасходМатериалаЛаминации1(); ОбщаяРасчетнаяТаблица.НормаМатериалаЛаминации2 = НормыРасчета.РасходМатериалаЛаминации2(); ОбщаяРасчетнаяТаблица.Кол_квМТиража = НормыРасчета.КвоКвМТиражаПриладки; ОбщаяРасчетнаяТаблица.КолПогонМетровТиража = НормыРасчета.КолПогонМетровТиражаПриладки; ОбщаяРасчетнаяТаблица.Себистоимость = РасчетСтоимости.Себистоимость(); ОбщаяРасчетнаяТаблица.СтоимостьНеРентабельно = РасчетСтоимости.СтоимостьНеРентабельно(); ОбщаяРасчетнаяТаблица.СтоимостьПрибыльно = РасчетСтоимости.СтоимостьПрибыльно(); ОбщаяРасчетнаяТаблица.СтоимостьПремиально = РасчетСтоимости.СтоимостьПремиально(); ОбщаяРасчетнаяТаблица.ПродСтоимостьНеРентабельно = РасчетСтоимости.ПродСтоимостьНеРентабельно(); ОбщаяРасчетнаяТаблица.ПродСтоимостьПрибыльно = РасчетСтоимости.ПродСтоимостьПрибыльно(); ОбщаяРасчетнаяТаблица.ПродСтоимостьПремиально = РасчетСтоимости.ПродСтоимостьПремиально(); Для НС=1 По тбКонтрагенты.КоличествоСтрок() Цикл ТекКонтрагент=тбКонтрагенты.ПолучитьЗначение(НС,"Контрагент"); КоефициентОтОбщегоЗаказаТекКонтрагента=РасчетСтоимости.КоефициентОтОбщегоЗаказа(ТекКонтрагент); ТаблицаРасчетнаяМассаТекКонтрагента=тбКонтрагенты.ПолучитьЗначение(НС,"тбРасчетнаяМасса"); СебистоимостьПечатныхФормТекКонтрагента=тбКонтрагенты.ПолучитьЗначение(НС,"СебистоимостьПечатныхФорм"); ЧьяДоставкаТекКонтрагента=тбКонтрагенты.ПолучитьЗначение(НС,"ЧьяДоставка"); ДоставкаТекКонтрагента =тбКонтрагенты.ПолучитьЗначение(НС,"ВыборДоставки"); ТаблицаРасчетнаяМассаТекКонтрагента.ПолучитьСтрокуПоНомеру(ОбщаяРасчетнаяТаблица.НомерСтроки); СебистоимостьТекКонтрагента=РасчетСтоимости.Себистоимость(ТекКонтрагент); ТаблицаРасчетнаяМассаТекКонтрагента.Масса=НормыРасчета.МассаПриладки*КоефициентОтОбщегоЗаказаТекКонтрагента; ТаблицаРасчетнаяМассаТекКонтрагента.Тираж=НормыРасчета.ТиражПриладки*КоефициентОтОбщегоЗаказаТекКонтрагента; ТаблицаРасчетнаяМассаТекКонтрагента.НормаОсновногоМатериала=НормыРасчета.РасходОсновногоМатериала()*КоефициентОтОбщегоЗаказаТекКонтрагента; ТаблицаРасчетнаяМассаТекКонтрагента.НормаМатериалаЛаминации1=НормыРасчета.РасходМатериалаЛаминации1()*КоефициентОтОбщегоЗаказаТекКонтрагента; ТаблицаРасчетнаяМассаТекКонтрагента.НормаМатериалаЛаминации2=НормыРасчета.РасходМатериалаЛаминации2()*КоефициентОтОбщегоЗаказаТекКонтрагента; ТаблицаРасчетнаяМассаТекКонтрагента.Себистоимость=РасчетСтоимости.Себистоимость(ТекКонтрагент); ТаблицаРасчетнаяМассаТекКонтрагента.СтоимостьНеРентабельно = РасчетСтоимости.СтоимостьНеРентабельно(ТекКонтрагент); ТаблицаРасчетнаяМассаТекКонтрагента.СтоимостьПрибыльно = РасчетСтоимости.СтоимостьПрибыльно(ТекКонтрагент); ТаблицаРасчетнаяМассаТекКонтрагента.СтоимостьПремиально = РасчетСтоимости.СтоимостьПремиально(ТекКонтрагент); ТаблицаРасчетнаяМассаТекКонтрагента.ПродСтоимостьНеРентабельно = РасчетСтоимости.ПродСтоимостьНеРентабельно(ТекКонтрагент); ТаблицаРасчетнаяМассаТекКонтрагента.ПродСтоимостьПрибыльно = РасчетСтоимости.ПродСтоимостьПрибыльно(ТекКонтрагент); ТаблицаРасчетнаяМассаТекКонтрагента.ПродСтоимостьПремиально = РасчетСтоимости.ПродСтоимостьПремиально(ТекКонтрагент); тбКонтрагенты.УстановитьЗначение(НС,"тбРасчетнаяМасса",ТаблицаРасчетнаяМассаТекКонтрагента) КонецЦикла; КонецЦикла; РасчетСделан=1; Для НС=1 По тбКонтрагенты.КоличествоСтрок() Цикл УстановленныйОбъемТекЗаказчика=тбКонтрагенты.ПолучитьЗначение(НС,"УстановленныйОбъем"); УстановленнаяЦенаТекЗаказчика=тбКонтрагенты.ПолучитьЗначение(НС,"УстановленнаяЦена"); ТаблицаРасчетнаяМассаОдногоЗаказчика=тбКонтрагенты.ПолучитьЗначение(НС,"тбРасчетнаяМасса"); Рентабельность=РасчитатьРентабельностьЗаказа(ТаблицаРасчетнаяМассаОдногоЗаказчика,УстановленныйОбъемТекЗаказчика,УстановленнаяЦенаТекЗаказчика); тбКонтрагенты.УстановитьЗначение(НС,"РентабельностьЗаказа",Рентабельность); КонецЦикла; Если ОбьемДляЭкономистов=0 Тогда ОбьемДляЭкономистов=1000; КонецЕсли; ОбновитьТаблицыДокумента(); ЗаполнитьТаблицыДляЭкономиста(ОбьемДляЭкономистов); ЗаполнитьСпискиРасчитанныхОбъемов(); ОбновитьВидимыеАтрибутыИТаблицы(тбКонтрагенты); ВспомогПроцедура(тбИсторияДокумента,"Изменения",глПользователь,"кРасчет", "Произведен расчет стоимости"); ОбъектП.ЗакрытьОкноСообщения(); КонецПроцедуры //------------------------------------------------------------------------------------------------------------ Функция ВернутьСписокНомеровЗаказовСтрокой(Разделитель="РазделительСтрок") Если Разделитель="РазделительСтрок" Тогда Разделитель=РазделительСтрок; КонецЕсли; список=""; Для ы=1 По тбКонтрагенты.КоличествоСтрок() Цикл ВыбранЗаказ=тбКонтрагенты.ПолучитьЗначение(ы,"ЗаказВакиля"); Если ПустоеЗначение(ВыбранЗаказ)=1 Тогда Продолжить; КонецЕсли; список=список+ВыбранЗаказ.НомерДок; Если ы<>тбКонтрагенты.КоличествоСтрок() Тогда список=список+Разделитель; КонецЕсли; КонецЦикла; Возврат список; КонецФункции //------------------------------------------------------------------------------------------------------------ Функция ВернутьНомерЗаказаСтрокой() ВыбранЗаказ=""; Если тбКонтрагенты.КоличествоСтрок()=1 Тогда Док=тбКонтрагенты.ПолучитьЗначение(1,"ЗаказВакиля"); Если ПустоеЗначение(Док)=0 Тогда ВыбранЗаказ="Заказ № "+Док.НомерДок; КонецЕсли; КонецЕсли; Возврат ВыбранЗаказ; КонецФункции //------------------------------------------------------------------------------------------------------------ Функция ВернутьУсловияОплатыСтрокой(КакаяОплата,ЧтоВернуть) Разделитель=РазделительСтрок; ВозвратнаяСтрока=""; Если КакаяОплата="Предоплата" Тогда Если ЧтоВернуть="Заголовок" Тогда ВозвратнаяСтрока="Предоплата:"; ИначеЕсли ЧтоВернуть="Значение" Тогда ТекОплата1=""+Оплата1; ВозвратнаяСтрока=ТекОплата1+" %"; Иначе КонецЕсли; ИначеЕсли КакаяОплата="ПередОтгрузкой" Тогда Если ЧтоВернуть="Заголовок" Тогда ВозвратнаяСтрока="Оплата перед отгрузкой:"; ИначеЕсли ЧтоВернуть="Значение" Тогда ТекОплата2=""+Оплата2; ВозвратнаяСтрока=ТекОплата2+" %"; КонецЕсли; ИначеЕсли КакаяОплата="Отсрочка" Тогда Если ЧтоВернуть="Заголовок" Тогда ВозвратнаяСтрока="Отсрочка:"; ИначеЕсли ЧтоВернуть="Значение" Тогда ТекОплата3=""+тбОплаты.Итог("Процент"); ТекСрокОтсрочки=глНайтиМаксимальное(тбОплаты,"КвоДней"); ВозвратнаяСтрока=ТекОплата3+" %"+" на срок: "+ТекСрокОтсрочки+ " дней"; КонецЕсли; КонецЕсли; Возврат ВозвратнаяСтрока; КонецФункции //------------------------------------------------------------------------------------------------------------ Функция ВернутьУОпоДоговоруСтрокой(КакаяОплата,ЧтоВернуть) Если Форма.Закладки.ПолучитьЗначение(Форма.Закладки.ТекущаяСтрока())<>"ПродажныеДанные" Тогда Возврат ""; КонецЕсли; Разделитель=РазделительСтрок; Цвет=-1; ВозвратнаяСтрока=""; Если (ТекСтрокатбКонтрагенты=0)или (тбКонтрагенты.КоличествоСтрок()=0) Тогда Возврат ВозвратнаяСтрока; КонецЕсли; ВыбранКонтрагент=тбКонтрагенты.ПолучитьЗначение(ТекСтрокатбКонтрагенты,"Контрагент"); ПоследнийПодписанныйДоговор=глВернутьПодписанныйДоговор(Фирма,Валюта,ВыбранКонтрагент,Менеджер); Если ПустоеЗначение(ПоследнийПодписанныйДоговор)=0 Тогда ТекОплата1=ПоследнийПодписанныйДоговор.Оплата1; ТекОплата2=ПоследнийПодписанныйДоговор.Оплата2; ТекОплата3=ПоследнийПодписанныйДоговор.Оплата3; ТекСрокОтсрочки=ПоследнийПодписанныйДоговор.СрокОтсрочки; Оплата3=тбОплаты.Итог("Процент"); СрокОтсрочки=глНайтиМаксимальное(тбОплаты,"КвоДней"); Если (ТекОплата1<>Оплата1)или (ТекОплата2<>Оплата2) или (ТекОплата3<>Оплата3) или (ТекСрокОтсрочки<>СрокОтсрочки) Тогда Цвет=глПолучитьЦвет(255,0,0); КонецЕсли; Если КакаяОплата="Предоплата" Тогда Если ЧтоВернуть="Заголовок" Тогда ВозвратнаяСтрока="Предоплата:"; ИначеЕсли ЧтоВернуть="Значение" Тогда ВозвратнаяСтрока=""+ТекОплата1+" %"; Иначе КонецЕсли; ИначеЕсли КакаяОплата="ПередОтгрузкой" Тогда Если ЧтоВернуть="Заголовок" Тогда ВозвратнаяСтрока="Оплата перед отгрузкой:"; ИначеЕсли ЧтоВернуть="Значение" Тогда ВозвратнаяСтрока=""+ТекОплата2+" %"; КонецЕсли; ИначеЕсли КакаяОплата="Отсрочка" Тогда Если ЧтоВернуть="Заголовок" Тогда ВозвратнаяСтрока="Отсрочка:"; ИначеЕсли ЧтоВернуть="Значение" Тогда ВозвратнаяСтрока=""+ТекОплата3+" %"+" на срок: "+ТекСрокОтсрочки+ " дней"; КонецЕсли; КонецЕсли; КонецЕсли; Форма.тПредоплата.Цвет(Цвет); Форма.тПередОтгрузкой.Цвет(Цвет); Форма.тОтсрочка.Цвет(Цвет); //Если тбКонтрагенты.КоличествоСтрок()>1 Тогда // АтрФормы=РасширениеФормы.ПолучитьАтрибут("рУсловияОплаты"); // АтрФормы.Заголовок="___________________________________________"; // АтрФормы.Заголовок="Условия оплаты "+ВыбранКонтрагент+" "; //КонецЕсли; Возврат ВозвратнаяСтрока; КонецФункции //------------------------------------------------------------------------------------------------------------ Функция ВернутьУОвКарточкеСтрокой(КакаяОплата,ЧтоВернуть) Если Форма.Закладки.ПолучитьЗначение(Форма.Закладки.ТекущаяСтрока())<>"ПродажныеДанные" Тогда Возврат ""; КонецЕсли; ВозвратнаяСтрока=""; Если (ТекСтрокатбКонтрагенты=0)или (тбКонтрагенты.КоличествоСтрок()=0) Тогда Возврат ВозвратнаяСтрока; КонецЕсли; ВыбранКонтрагент=тбКонтрагенты.ПолучитьЗначение(ТекСтрокатбКонтрагенты,"Контрагент"); Если ПустоеЗначение(ВыбранКонтрагент)=0 Тогда ТекОплата1=ВыбранКонтрагент.Оплата1.Получить(ДатаДок); ТекОплата2=ВыбранКонтрагент.Оплата2.Получить(ДатаДок); ТекОплата3=ВыбранКонтрагент.Оплата3.Получить(ДатаДок); ТекСрокОтсрочки=ВыбранКонтрагент.Глубина.Получить(ДатаДок); Если КакаяОплата="Предоплата" Тогда Если ЧтоВернуть="Заголовок" Тогда ВозвратнаяСтрока="Предоплата:"; ИначеЕсли ЧтоВернуть="Значение" Тогда ВозвратнаяСтрока=""+ТекОплата1+" %"; Иначе КонецЕсли; ИначеЕсли КакаяОплата="ПередОтгрузкой" Тогда Если ЧтоВернуть="Заголовок" Тогда ВозвратнаяСтрока="Оплата перед отгрузкой:"; ИначеЕсли ЧтоВернуть="Значение" Тогда ВозвратнаяСтрока=""+ТекОплата2+" %"; КонецЕсли; ИначеЕсли КакаяОплата="Отсрочка" Тогда Если ЧтоВернуть="Заголовок" Тогда ВозвратнаяСтрока="Отсрочка:"; ИначеЕсли ЧтоВернуть="Значение" Тогда ВозвратнаяСтрока=""+ТекОплата3+" %"+" на срок: "+ТекСрокОтсрочки+ " дней"; КонецЕсли; КонецЕсли; КонецЕсли; Возврат ВозвратнаяСтрока; КонецФункции //------------------------------------------------------------------------------------------------------------ Функция ЗаполнитьЗаявкуИзДокОснования(КонтекстЗаявки,ДействиеСЗаявкой=0) Неизменять=0; Перезаполнить=1; ДобавитьНовыеСтроки=2; Если ДействиеСЗаявкой=Неизменять Тогда Возврат 1; КонецЕсли; КонтекстЗаявки.Фирма=Константа.БазФирма; КонтекстЗаявки.Валюта = Гривня; КонтекстЗаявки.Курс = глКурсДляВалюты(Валюта,ДатаДок); Если КонтекстЗаявки.Выбран()=1 Тогда глУстановитьНомер(КонтекстЗаявки,1); КонецЕсли; КонтекстЗаявки.Менеджер=Менеджер; КонтекстЗаявки.Заказчик=Контрагент; КонтекстЗаявки.РасчетВладелец=ТекущийДокумент(); Если КакСчитаем=0 Тогда Сообщить("Ошибка при создании заявки"); Возврат 0; КонецЕсли; Если КакСчитаем=СчитаемОтМассы Тогда ИскомКол="Масса"; ИначеЕсли КакСчитаем=СчитаемОтТиража Тогда ИскомКол="Тираж"; Иначе Сообщить("Ошибка при создании заявки"); Возврат 0; КонецЕсли; НомСтр=""; ОбщаяРасчетнаяТаблица.НайтиЗначение(ОбщийПродажныйОбъем,НомСтр,ИскомКол); Если НомСтр=0 Тогда Сообщить("Ошибка при создании заявки"); Возврат 0; КонецЕсли; ОбщаяРасчетнаяТаблица.ПолучитьСтрокуПоНомеру(НомСтр); КонтекстЗаявки.МассаЗаказа=ОбщаяРасчетнаяТаблица.Масса; НеобходимыйВесОсновногоМатериала=Окр(ОбщаяРасчетнаяТаблица.НормаОсновногоМатериала-ДавальческийВесОснМатериала,3,1); НеобходимыйВесМатериалаЛаминации1=Окр(ОбщаяРасчетнаяТаблица.НормаМатериалаЛаминации1-ДавальческийВесМатериалаЛаминации1,3,1); НеобходимыйВесМатериалаЛаминации2=Окр(ОбщаяРасчетнаяТаблица.НормаМатериалаЛаминации2-ДавальческийВесМатериалаЛаминации2,3,1); ИТСтрокиЗаявки=СоздатьОбъект("ИндексированнаяТаблица"); ИТСтрокиЗаявки.Загрузить(КонтекстЗаявки); ИТСтрокиЗаявки.ДобавитьИндекс("инМатериалИНазначение","Материал,Назначение"); Если ДействиеСЗаявкой=Перезаполнить Тогда ИТСтрокиЗаявки.УдалитьСтроки(); Если ПустоеЗначение(ОсновнойМатериал)=0 Тогда Если (КоефНашегоОснМатериала<>0)И(НеобходимыйВесОсновногоМатериала<>0) Тогда ИТСтрокиЗаявки.НоваяСтрока(); ИТСтрокиЗаявки.Материал=ОсновнойМатериал; ИТСтрокиЗаявки.Назначение=Перечисление.НазначениеМатериала.Печать; ИТСтрокиЗаявки.НеобходимаяШиринаСырья=ШиринаСырьяОсновногоМатериала; ИТСтрокиЗаявки.НеобходимаяТолщинаСырья=ТолщинаОсновногоМатериала; ИТСтрокиЗаявки.НеобходимыйВесСырья=НеобходимыйВесОсновногоМатериала; КонецЕсли; КонецЕсли; Если ПустоеЗначение(МатериалЛаминации1)=0 Тогда //2-наша поставка Если КоефНашегоМатериалаЛаминации1<>0 Тогда ИТСтрокиЗаявки.НоваяСтрока(); ИТСтрокиЗаявки.Материал=МатериалЛаминации1; ИТСтрокиЗаявки.Назначение=Перечисление.НазначениеМатериала.Ламинация1; ИТСтрокиЗаявки.НеобходимаяШиринаСырья=ШиринаСырьяМатериалаЛаминации1; ИТСтрокиЗаявки.НеобходимаяТолщинаСырья=ТолщинаМатериалаЛаминации1; ИТСтрокиЗаявки.НеобходимыйВесСырья=НеобходимыйВесМатериалаЛаминации1; КонецЕсли; КонецЕсли; Если ПустоеЗначение(МатериалЛаминации2)=0 Тогда //2-наша поставка Если КоефНашегоМатериалаЛаминации2<>0 Тогда ИТСтрокиЗаявки.НоваяСтрока(); ИТСтрокиЗаявки.Материал=МатериалЛаминации2; ИТСтрокиЗаявки.Назначение=Перечисление.НазначениеМатериала.Ламинация2; ИТСтрокиЗаявки.НеобходимаяШиринаСырья=ШиринаСырьяМатериалаЛаминации2; ИТСтрокиЗаявки.НеобходимаяТолщинаСырья=ТолщинаМатериалаЛаминации2; ИТСтрокиЗаявки.НеобходимыйВесСырья=НеобходимыйВесМатериалаЛаминации2; КонецЕсли; КонецЕсли; ИначеЕсли ДействиеСЗаявкой=ДобавитьНовыеСтроки Тогда спПараметры=СоздатьОбъект("СписокЗначений"); спПараметры.ДобавитьЗначение(ОсновнойМатериал,"Материал"); спПараметры.ДобавитьЗначение(Перечисление.НазначениеМатериала.Печать,"Назначение"); ИТСтрокиДокумента.УстановитьФильтр("инМатериалИНазначение",спПараметры); ВесОсновногоМатериалаВЗаявке=ИТСтрокиДокумента.Итог(НеобходимыйВесОсновногоМатериала,"инМатериалИНазначение"); Если ПустоеЗначение(ОсновнойМатериал)=0 Тогда Если (КоефНашегоОснМатериала<>0)И(НеобходимыйВесОсновногоМатериала<>0) Тогда ИТСтрокиЗаявки.НоваяСтрока(); ИТСтрокиЗаявки.Материал=ОсновнойМатериал; ИТСтрокиЗаявки.Назначение=Перечисление.НазначениеМатериала.Печать; ИТСтрокиЗаявки.НеобходимаяШиринаСырья=ШиринаСырьяОсновногоМатериала; ИТСтрокиЗаявки.НеобходимаяТолщинаСырья=ТолщинаОсновногоМатериала; ИТСтрокиЗаявки.НеобходимыйВесСырья=НеобходимыйВесОсновногоМатериала; КонецЕсли; КонецЕсли; Если ПустоеЗначение(МатериалЛаминации1)=0 Тогда //2-наша поставка Если КоефНашегоМатериалаЛаминации1<>0 Тогда ИТСтрокиЗаявки.НоваяСтрока(); ИТСтрокиЗаявки.Материал=МатериалЛаминации1; ИТСтрокиЗаявки.Назначение=Перечисление.НазначениеМатериала.Ламинация1; ИТСтрокиЗаявки.НеобходимаяШиринаСырья=ШиринаСырьяМатериалаЛаминации1; ИТСтрокиЗаявки.НеобходимаяТолщинаСырья=ТолщинаМатериалаЛаминации1; ИТСтрокиЗаявки.НеобходимыйВесСырья=НеобходимыйВесМатериалаЛаминации1; КонецЕсли; КонецЕсли; Если ПустоеЗначение(МатериалЛаминации2)=0 Тогда //2-наша поставка Если КоефНашегоМатериалаЛаминации2<>0 Тогда ИТСтрокиЗаявки.НоваяСтрока(); ИТСтрокиЗаявки.Материал=МатериалЛаминации2; ИТСтрокиЗаявки.Назначение=Перечисление.НазначениеМатериала.Ламинация2; ИТСтрокиЗаявки.НеобходимаяШиринаСырья=ШиринаСырьяМатериалаЛаминации2; ИТСтрокиЗаявки.НеобходимаяТолщинаСырья=ТолщинаМатериалаЛаминации2; ИТСтрокиЗаявки.НеобходимыйВесСырья=НеобходимыйВесМатериалаЛаминации2; КонецЕсли; КонецЕсли; КонецЕсли; ИТСтрокиЗаявки.Выгрузить(КонтекстЗаявки); Возврат 1; КонецФункции // =============================== Функция СоответствиеЗаявкиИДокОснования(Заявка) Если Заявка.МассаЗаказа <> ОбщийПродажныйОбъем Тогда Возврат Нет; КонецЕсли; Если КакСчитаем=СчитаемОтМассы Тогда ИскомКол="Масса"; ИначеЕсли КакСчитаем=СчитаемОтТиража Тогда ИскомКол="Тираж"; Иначе Сообщить("Ошибка при создании заявки"); Возврат Нет; КонецЕсли; НомСтр=""; ОбщаяРасчетнаяТаблица.НайтиЗначение(ОбщийПродажныйОбъем,НомСтр,ИскомКол); Если НомСтр=0 Тогда Сообщить("Ошибка при проверке заявки"); Возврат Нет; КонецЕсли; ОбщаяРасчетнаяТаблица.ПолучитьСтрокуПоНомеру(НомСтр); НеобходимыйВесСырья1=Окр(ОбщаяРасчетнаяТаблица.НормаОсновногоМатериала-ДавальческийВесОснМатериала,3,1); НеобходимыйВесСырья2=Окр(ОбщаяРасчетнаяТаблица.НормаМатериалаЛаминации1-ДавальческийВесМатериалаЛаминации1,3,1); НеобходимыйВесСырья3=Окр(ОбщаяРасчетнаяТаблица.НормаМатериалаЛаминации2-ДавальческийВесМатериалаЛаминации2,3,1); Материал1ОсновнойМатериал=""; Назначение1=""; НеобходимаяШиринаСырья1=0; НеобходимаяТолщинаСырья1=0; ПоставкаМатериала1=0; //0-поставка заказчика Материал2=""; Назначение2=""; НеобходимаяШиринаСырья2=0; НеобходимаяТолщинаСырья2=0; ПоставкаМатериала2=0; //0-поставка заказчика Материал3=""; Назначение3=""; НеобходимаяШиринаСырья3=0; НеобходимаяТолщинаСырья3=0; ПоставкаМатериала3=0; Если ПустоеЗначение(ОсновнойМатериал)=0 Тогда Материал1=ОсновнойМатериал; Назначение1=Перечисление.НазначениеМатериала.Печать; НеобходимаяШиринаСырья1=ШиринаСырьяОсновногоМатериала; НеобходимаяТолщинаСырья1=ТолщинаОсновногоМатериала; ПоставкаМатериала1=КоефНашегоОснМатериала; //0-поставка заказчика КонецЕсли; Если ПустоеЗначение(МатериалЛаминации1)=0 Тогда Материал2=МатериалЛаминации1; Назначение2=Перечисление.НазначениеМатериала.Ламинация1; НеобходимаяШиринаСырья2=ШиринаСырьяМатериалаЛаминации1; НеобходимаяТолщинаСырья2=ТолщинаМатериалаЛаминации1; ПоставкаМатериала2=КоефНашегоМатериалаЛаминации1; //0-поставка заказчика КонецЕсли; Если ПустоеЗначение(МатериалЛаминации2)=0 Тогда Материал3=МатериалЛаминации2; Назначение3=Перечисление.НазначениеМатериала.Ламинация2; НеобходимаяШиринаСырья3=ШиринаСырьяМатериалаЛаминации2; НеобходимаяТолщинаСырья3=ТолщинаМатериалаЛаминации2; ПоставкаМатериала3=КоефНашегоМатериалаЛаминации2; //0-поставка заказчика КонецЕсли; Если ПустоеЗначение(Материал1)=1 Тогда Возврат Нет; КонецЕсли; ИТСтрокиЗаявки=СоздатьОбъект("ИндексированнаяТаблица"); ИТСтрокиЗаявки.Загрузить(Заявка); ИТСтрокиЗаявки.ДобавитьИндекс("инМатериал","Материал"); Если ИТСтрокиЗаявки.КоличествоСтрок()=0 Тогда Возврат Нет; КонецЕсли; Если (ПустоеЗначение(Материал1)=0)и(ПоставкаМатериала1<>0) Тогда НС=ИТСтрокиЗаявки.НайтиСтроку("инМатериал",Материал1); Если НС=0 Тогда Возврат Нет; КонецЕсли; Если ИТСтрокиЗаявки.ПолучитьЗначение(НС,"Материал")<>Материал1 Тогда Возврат Нет; КонецЕсли; Если ИТСтрокиЗаявки.ПолучитьЗначение(НС,"Назначение")<>Назначение1 Тогда Возврат Нет; КонецЕсли; Если ИТСтрокиЗаявки.ПолучитьЗначение(НС,"НеобходимаяШиринаСырья")<>НеобходимаяШиринаСырья1 Тогда Возврат Нет; КонецЕсли; Если ИТСтрокиЗаявки.ПолучитьЗначение(НС,"НеобходимыйВесСырья")<>НеобходимыйВесСырья1 Тогда Возврат Нет; КонецЕсли; Если ИТСтрокиЗаявки.ПолучитьЗначение(НС,"НеобходимаяТолщинаСырья")<>НеобходимаяТолщинаСырья1 Тогда Возврат Нет; КонецЕсли; КонецЕсли; Если (ПустоеЗначение(Материал2)=0)и(ПоставкаМатериала2<>0) Тогда НС=ИТСтрокиЗаявки.НайтиСтроку("инМатериал",Материал2); Если НС=0 Тогда Возврат Нет; КонецЕсли; Если ИТСтрокиЗаявки.ПолучитьЗначение(НС,"Материал")<>Материал2 Тогда Возврат Нет; КонецЕсли; Если ИТСтрокиЗаявки.ПолучитьЗначение(НС,"Назначение")<>Назначение2 Тогда Возврат Нет; КонецЕсли; Если ИТСтрокиЗаявки.ПолучитьЗначение(НС,"НеобходимаяШиринаСырья")<>НеобходимаяШиринаСырья2 Тогда Возврат Нет; КонецЕсли; Если ИТСтрокиЗаявки.ПолучитьЗначение(НС,"НеобходимыйВесСырья")<>НеобходимыйВесСырья2 Тогда Возврат Нет; КонецЕсли; Если ИТСтрокиЗаявки.ПолучитьЗначение(НС,"НеобходимаяТолщинаСырья")<>НеобходимаяТолщинаСырья2 Тогда Возврат Нет; КонецЕсли; КонецЕсли; Если(ПустоеЗначение(Материал3)=0)и(ПоставкаМатериала3<>0) Тогда НС=ИТСтрокиЗаявки.НайтиСтроку("инМатериал",Материал3); Если НС=0 Тогда Возврат Нет; КонецЕсли; Если ИТСтрокиЗаявки.ПолучитьЗначение(НС,"Материал")<>Материал3 Тогда Возврат Нет; КонецЕсли; Если ИТСтрокиЗаявки.ПолучитьЗначение(НС,"Назначение")<>Назначение3 Тогда Возврат Нет; КонецЕсли; Если ИТСтрокиЗаявки.ПолучитьЗначение(НС,"НеобходимаяШиринаСырья")<>НеобходимаяШиринаСырья3 Тогда Возврат Нет; КонецЕсли; Если ИТСтрокиЗаявки.ПолучитьЗначение(НС,"НеобходимыйВесСырья")<>НеобходимыйВесСырья3 Тогда Возврат Нет; КонецЕсли; Если ИТСтрокиЗаявки.ПолучитьЗначение(НС,"НеобходимаяТолщинаСырья")<>НеобходимаяТолщинаСырья3 Тогда Возврат Нет; КонецЕсли; КонецЕсли; Возврат Да; КонецФункции // =============================== Процедура ОткрытьЗаявкуНаСырье(ОткрытьФормуДокумента=1) Если Выбран()=0 Тогда Возврат; КонецЕсли; Заявка=СоздатьОбъект("Документ"); Заявка.ВыбратьПоЗначению(,,"ДокументВладелец",ТекущийДокумент()); Нашли=0; Пока Заявка.ПолучитьДокумент()=1 Цикл Если Заявка.Вид()="ЗаявкаНаСырье" Тогда Нашли=1; Прервать; КонецЕсли; КонецЦикла; КонтекстФормы=глВернутьКонтекст(Контекст); Параметры=СоздатьОбъект("АссоциативныйВектор"); Параметры.Добавить(ТекущийДокумент(), "ОткрывающийДокумент"); Параметры.Добавить(КонтекстФормы,"КонтекстОткрывающегоДокумента"); КонтекстЗаявки=Параметры; Неизменять=0; Перезаполнить=1; ДобавитьНовыеСтроки=2; ДействиеСЗаявкой=Перезаполнить; Если Нашли=0 Тогда //СоздаемНовуюЗаявкуНаСырье Если ОткрытьФормуДокумента=1 Тогда ТекстВопроса="Вы уверены, что хотите "+РазделительСтрок+"создать новую заявку на сырье?"; Если Вопрос(ТекстВопроса,"ОК+Отмена",30)<>"ОК" Тогда Возврат; КонецЕсли; ОткрытьФорму("Документ.ЗаявкаНаСырье",КонтекстЗаявки); Иначе КонтекстЗаявки=СоздатьОбъект("Документ.ЗаявкаНаСырье"); КонтекстЗаявки.Новый(); КонтекстЗаявки.АвтоВремяТекущее(); КонецЕсли; Иначе Если (СоответствиеЗаявкиИДокОснования(Заявка)=Да) Тогда ДействиеСЗаявкой=Неизменять; ИначеЕсли (Заявка.фПодписьПринялВРаботу=1)или(Заявка.фПодписьРуководителя=1) Тогда //ДействиеСЗаявкой=ДобавитьНовыеСтроки; ДействиеСЗаявкой=Неизменять; КонецЕсли; Если ОткрытьФормуДокумента=1 Тогда ОткрытьФорму(Заявка.ТекущийДокумент(),КонтекстЗаявки,-1); Иначе КонтекстЗаявки=СоздатьОбъект("Документ.ЗаявкаНаСырье"); КонтекстЗаявки.НайтиДокумент(Заявка.ТекущийДокумент()); КонецЕсли; КонецЕсли; Если (ТипЗначенияСтр(КонтекстЗаявки)="ГрупповойКонтекст")ИЛИ (ТипЗначенияСтр(КонтекстЗаявки)="Документ") Тогда Если (ДействиеСЗаявкой=Перезаполнить)или (ДействиеСЗаявкой=ДобавитьНовыеСтроки) Тогда ЗаполнитьЗаявкуИзДокОснования(КонтекстЗаявки,ДействиеСЗаявкой); Если ОткрытьФормуДокумента=1 Тогда КонтекстЗаявки.Форма.Обновить(); Иначе КонтекстЗаявки.Записать(); Если ИмяПользователя()="zk96" Тогда Сообщить("Обновили и Записали "+КонтекстЗаявки); КонецЕсли; КонецЕсли; КонецЕсли; КонецЕсли; КонецПроцедуры //------------------------------------------------------------------------------------------------------------ Процедура ОткрытьТехЗадание() Если Выбран()=0 Тогда Возврат; КонецЕсли; ТаблицаТехЗаданий=СоздатьОбъект("ИндексированнаяТаблица"); ТаблицаТехЗаданий.НоваяКолонка("ТехЗадание"); ТаблицаТехЗаданий.НоваяКолонка("Дизайн"); ТЗ=СоздатьОбъект("Документ"); ТЗ.ВыбратьПоЗначению(,,"ДокументВладелец",ТекущийДокумент()); Пока ТЗ.ПолучитьДокумент()=1 Цикл Если ТЗ.Вид()="ТехническоеЗадание" Тогда ТаблицаТехЗаданий.НоваяСтрока(); ТаблицаТехЗаданий.ТехЗадание=ТЗ.ТекущийДокумент(); ТаблицаТехЗаданий.Дизайн=ТЗ.Дизайн; КонецЕсли; КонецЦикла; ТаблицаТехЗаданий.ДобавитьИндекс("инДизайн","Дизайн"); ТекстВопроса=""; ТехЗадание=СоздатьОбъект("Документ.ТехническоеЗадание"); ////проверим есть ли техзадания СоздаемНовыеТехЗадания=0; ЕстьТехЗадания=0; ИТСтрокиДокумента.ВНачало(); Пока ИТСтрокиДокумента.СледующаяСтрока()=1 Цикл НС = ТаблицаТехЗаданий.НайтиСтроку("инДизайн",ИТСтрокиДокумента.Дизайн); Если(ИТСтрокиДокумента.СостояниеДизайна=Перечисление.СостояниеДизайна.Повтор) ИЛИ(ИТСтрокиДокумента.СостояниеДизайна=Перечисление.СостояниеДизайна.ПовторСНовымиФормами) Тогда Если НС=0 Тогда Продолжить; КонецЕсли; ТехЗадание=СоздатьОбъект("Документ.ТехническоеЗадание"); Док=ТаблицаТехЗаданий.ПолучитьЗначение(НС,"ТехЗадание"); ТехЗадание.НайтиДокумент(Док); Попытка ТехЗадание.Удалить(0); Исключение КонецПопытки; Продолжить; КонецЕсли; Если НС<>0 Тогда ЕстьТехЗадания=1; Иначе СоздаемНовыеТехЗадания=1; КонецЕсли; КонецЦикла; Если СоздаемНовыеТехЗадания=1 Тогда ТекстВопроса="Вы уверены, что хотите "+РазделительСтрок+"создать новые тех.задания?"; Если Вопрос(ТекстВопроса,"ОК+Отмена",30)<>"ОК" Тогда Возврат; КонецЕсли; КонецЕсли; ИТСтрокиДокумента.ВНачало(); Пока ИТСтрокиДокумента.СледующаяСтрока()=1 Цикл ТекстВопроса=""; Если(ИТСтрокиДокумента.СостояниеДизайна=Перечисление.СостояниеДизайна.Повтор) ИЛИ(ИТСтрокиДокумента.СостояниеДизайна=Перечисление.СостояниеДизайна.ПовторСНовымиФормами) Тогда Продолжить; КонецЕсли; ИТЗТехнолог=ПДИнТбТехнолог.Данные.ИндексированнаяТаблица; ТаблицаКрасокДизайна=ИТСтрокиДокумента.ТаблицаКрасок; НС = ТаблицаТехЗаданий.НайтиСтроку("инДизайн",ИТСтрокиДокумента.Дизайн); Если НС=0 Тогда ТехЗадание.Новый(); ТехЗадание.АвтовремяТекущее(); ТехЗадание.Фирма=Фирма; глУстановитьНомер(ТехЗадание,1); Если ИТСтрокиДокумента.СостояниеДизайна=Перечисление.СостояниеДизайна.Новый Тогда СписокЗначений=СоздатьОбъект("СписокЗначений"); Идентификатор="ТехЗаданиеНаАдаптациюДизайна"; Вид=Перечисление.ВидыТехЗаданий.ЗначениеПоИдентификатору(Идентификатор); Представление=Метаданные.Перечисление("ВидыТехЗаданий").Значение(Идентификатор).Представление; СписокЗначений.ДобавитьЗначение(Вид,Представление); Идентификатор="ТехЗаданиеНаКреатив"; Вид=Перечисление.ВидыТехЗаданий.ЗначениеПоИдентификатору(Идентификатор); Представление=Метаданные.Перечисление("ВидыТехЗаданий").Значение(Идентификатор).Представление; СписокЗначений.ДобавитьЗначение(Вид,Представление); Заголовок="Выберите Вид Технического Задания для "+Дизайн.Наименование; Значение=""; Позиция=1; Если СписокЗначений.ВыбратьЗначение(Значение,Заголовок,Позиция,,0)=0 Тогда СтатусВозврата(0); Возврат; КонецЕсли; ВидТехЗадания=Значение; ИначеЕсли ИТСтрокиДокумента.СостояниеДизайна=Перечисление.СостояниеДизайна.ПовторСИзменениями Тогда ВидТехЗадания=Перечисление.ВидыТехЗаданий.ТехЗаданиеНаИзменениеДизайна; КонецЕсли; ТехЗадание.РасчетВладелец=ТекущийДокумент(); ТехЗадание.ВидТехЗадания=ВидТехЗадания; ТехЗадание.фПакетоделание= фПакетоделание; ТехЗадание.НашаФирма=НашаФирма; ТехЗадание.Менеджер=Менеджер; ТехЗадание.ПечатнаяМашина=ПечатнаяМашина; ТехЗадание.ОсновнойМатериал=ОсновнойМатериал; ТехЗадание.ШиринаСырьяОсновногоМатериала=ШиринаСырьяОсновногоМатериала; ТехЗадание.МатериалЛаминации1=МатериалЛаминации1; ТехЗадание.ШиринаСырьяМатериалаЛаминации1=ШиринаСырьяМатериалаЛаминации1; ТехЗадание.МатериалЛаминации2=МатериалЛаминации2; ТехЗадание.ШиринаСырьяМатериалаЛаминации2=ШиринаСырьяМатериалаЛаминации2; ТехЗадание.Развертка=ИТСтрокиДокумента.РазверткаДизайна; ТехЗадание.Контрагент=ИТСтрокиДокумента.Заказчик; НС=""; Если тбКонтрагенты.НайтиЗначение(ИТСтрокиДокумента.Заказчик,НС,"Контрагент")=1 Тогда ТехЗадание.ЗаказВакиля=тбКонтрагенты.ПолучитьЗначение(НС,"ЗаказВакиля"); КонецЕсли; ТехЗадание.Дизайн=ИТСтрокиДокумента.Дизайн; ТехЗадание.НомерСтрокиВРасчетеВладельце=ИТСтрокиДокумента.НомерСтрокиДокумента; ТехЗадание.ШагПечати=ИТСтрокиДокумента.ШагПечати; Если (фРучнойВводШириныРисунка=1)И(ИТСтрокиДокумента.ВысотаФормы<>0) Тогда ТехЗадание.ВысотаЗапечатки=ИТСтрокиДокумента.ВысотаФормы; Иначе ТехЗадание.ВысотаЗапечатки=ИТСтрокиДокумента.ШагПечати; КонецЕсли; ТехЗадание.ШиринаДорожки=ИТСтрокиДокумента.ШиринаДорожки; Если (фРучнойВводШириныРисунка=1)И(ИТСтрокиДокумента.ШиринаФормы<>0) Тогда ТехЗадание.ШиринаЗапечатки=ИТСтрокиДокумента.ШиринаФормы; Иначе ТехЗадание.ШиринаЗапечатки=ИТСтрокиДокумента.ШиринаДорожки; КонецЕсли; ТехЗадание.БоковаяЗакладка=ИТСтрокиДокумента.БоковаяЗакладка; ТехЗадание.НижняяЗакладка=ИТСтрокиДокумента.НижняяЗакладка; ТехЗадание.ВерхняяЗакладка=ИТСтрокиДокумента.ВерхняяЗакладка; ТехЗадание.ШиринаРучки=ИТСтрокиДокумента.ШиринаРучки; ТехЗадание.ДлинаРучки=ИТСтрокиДокумента.ДлинаРучки; ТехЗадание.ТипПакета=ИТСтрокиДокумента.ТипПакета; ТехЗадание.ТипРучки=ИТСтрокиДокумента.ТипРучки; ТехЗадание.РисунокДизайна=ИТСтрокиДокумента.РисунокДизайна; ТехЗадание.ВидНамотки=ИТСтрокиДокумента.ВидНамотки; ТехЗадание.ЕстьМетка=ИТСтрокиДокумента.ЕстьМетка; ТехЗадание.РасположениеМетки=ИТСтрокиДокумента.РасположениеМетки; ТехЗадание.РастояниеМеждуМетками=ИТСтрокиДокумента.РастояниеМеждуМетками; ТехЗадание.РастояниеОтРисункаДоМетки=ИТСтрокиДокумента.РастояниеОтРисункаДоМетки; ТехЗадание.ВысотаМетки=ИТСтрокиДокумента.ВысотаМетки; ТехЗадание.ШиринаМетки=ИТСтрокиДокумента.ШиринаМетки; ТаблицаКрасокДизайна.ВыбратьСтроки(); Пока ТаблицаКрасокДизайна.ПолучитьСтроку()=1 Цикл Если ПустоеЗначение(ТаблицаКрасокДизайна.Краска)=1 Тогда Продолжить; КонецЕсли; ТехЗадание.НоваяСтрока(); ТехЗадание.Краска=ТаблицаКрасокДизайна.Краска; ТехЗадание.ПроцентЗапечатки=ТаблицаКрасокДизайна.ПроцентЗапечатки; ТехЗадание.Анилокс=ТаблицаКрасокДизайна.Анилокс; КонецЦикла; тбИсторияДокументаТехЗадание=СоздатьОбъект("ТаблицаЗначений"); Если ПустоеЗначение(ТехЗадание.тбИсторияДокументаСтрокой)=0 Тогда тбИсторияДокументаТехЗадание.Загрузить(ЗначениеИзСтроки(ТехЗадание.тбИсторияДокументаСтрокой)); Иначе тбИсторияДокументаТехЗадание.НоваяКолонка("Пользователь","Справочник.Пользователи"); тбИсторияДокументаТехЗадание.НоваяКолонка("ДатаИзменения","Дата"); тбИсторияДокументаТехЗадание.НоваяКолонка("ВремяИзменения","Строка",10); тбИсторияДокументаТехЗадание.НоваяКолонка("Атрибут","Строка",100); тбИсторияДокументаТехЗадание.НоваяКолонка("Действие","Строка",100); КонецЕсли; ВспомогПроцедура(тбИсторияДокументаТехЗадание,"Изменения",глПользователь,"НовыйДок", "Создан новый документ"); ТехЗадание.тбИсторияДокументаСтрокой=ЗначениеВСтроку(тбИсторияДокументаТехЗадание); ТехЗадание.Записать(); ТехническоеЗадание=ТехЗадание.ТекущийДокумент(); СоздаемНовыеТехЗадания=1; Иначе НужнаЗапись=0; ТехЗадание.НайтиДокумент(ТаблицаТехЗаданий.ПолучитьЗначение(НС,"ТехЗадание")); Если ИТСтрокиДокумента.СостояниеДизайна=Перечисление.СостояниеДизайна.Новый Тогда ВидТехЗадания1=Перечисление.ВидыТехЗаданий.ТехЗаданиеНаАдаптациюДизайна; ВидТехЗадания2=Перечисление.ВидыТехЗаданий.ТехЗаданиеНаКреатив; ИначеЕсли ИТСтрокиДокумента.СостояниеДизайна=Перечисление.СостояниеДизайна.ПовторСИзменениями Тогда ВидТехЗадания1=Перечисление.ВидыТехЗаданий.ТехЗаданиеНаИзменениеДизайна; ВидТехЗадания2=Перечисление.ВидыТехЗаданий.ТехЗаданиеНаИзменениеДизайна; КонецЕсли; Если (ВидТехЗадания1<>ТехЗадание.ВидТехЗадания)И(ВидТехЗадания2<>ТехЗадание.ВидТехЗадания) Тогда ТекстВопроса="В расчете изменено Состояние дизайна ."+РазделительСтрок +"Будет изменен вид Тех.Задания. "+РазделительСтрок+"Продолжить?"; Если Вопрос(ТекстВопроса,"ОК+Отмена'",30)<>"ОК" Тогда Возврат; КонецЕсли; ТекстВопроса=""; Если ИТСтрокиДокумента.СостояниеДизайна=Перечисление.СостояниеДизайна.Новый Тогда СписокЗначений=СоздатьОбъект("СписокЗначений"); Идентификатор="ТехЗаданиеНаАдаптациюДизайна"; Вид=Перечисление.ВидыТехЗаданий.ЗначениеПоИдентификатору(Идентификатор); Представление=Метаданные.Перечисление("ВидыТехЗаданий").Значение(Идентификатор).Представление; СписокЗначений.ДобавитьЗначение(Вид,Представление); Идентификатор="ТехЗаданиеНаКреатив"; Вид=Перечисление.ВидыТехЗаданий.ЗначениеПоИдентификатору(Идентификатор); Представление=Метаданные.Перечисление("ВидыТехЗаданий").Значение(Идентификатор).Представление; СписокЗначений.ДобавитьЗначение(Вид,Представление); Заголовок="Выберите Вид Технического Задания для "+Дизайн.Наименование; Значение=""; Позиция=1; Если СписокЗначений.ВыбратьЗначение(Значение,Заголовок,Позиция,,0)=0 Тогда СтатусВозврата(0); Возврат; КонецЕсли; ВидТехЗадания=Значение; ИначеЕсли ИТСтрокиДокумента.СостояниеДизайна=Перечисление.СостояниеДизайна.ПовторСИзменениями Тогда ВидТехЗадания=Перечисление.ВидыТехЗаданий.ТехЗаданиеНаИзменениеДизайна; КонецЕсли; ТехЗадание.ВидТехЗадания=ВидТехЗадания; НужнаЗапись=1; КонецЕсли; Если ИТСтрокиДокумента.Заказчик<>ТехЗадание.Контрагент Тогда ТекстВопроса=ТекстВопроса+"Изменился заказчик."; ТехЗадание.Контрагент=Заказчик; НужнаЗапись=1; КонецЕсли; Если Менеджер<>ТехЗадание.Менеджер Тогда ТекстВопроса=ТекстВопроса+"Изменился Менеджер."; ТехЗадание.Менеджер=Менеджер; НужнаЗапись=1; КонецЕсли; НС=""; Если тбКонтрагенты.НайтиЗначение(ИТСтрокиДокумента.Заказчик,НС,"Контрагент")=1 Тогда ТекЗаказ=тбКонтрагенты.ПолучитьЗначение(НС,"ЗаказВакиля"); КонецЕсли; Если ТекЗаказ<>ТехЗадание.ЗаказВакиля Тогда Если ПустоеЗначение(ТекстВопроса)=0 Тогда ТекстВопроса=ТекстВопроса+РазделительСтрок; КонецЕсли; ТекстВопроса=ТекстВопроса+"Изменился Заказ."; ТехЗадание.ЗаказВакиля=ТекЗаказ; НужнаЗапись=1; КонецЕсли; Если ТехЗадание.ПечатнаяМашина<>ПечатнаяМашина Тогда ТехЗадание.ПечатнаяМашина=ПечатнаяМашина; Если ПустоеЗначение(ТекстВопроса)=0 Тогда ТекстВопроса=ТекстВопроса+РазделительСтрок; КонецЕсли; ТекстВопроса=ТекстВопроса+"Изменилась ПечатнаяМашина."; НужнаЗапись=1; КонецЕсли; Если (ОсновнойМатериал<>ТехЗадание.ОсновнойМатериал) ИЛИ (ШиринаСырьяОсновногоМатериала<>ТехЗадание.ШиринаСырьяОсновногоМатериала) ИЛИ (МатериалЛаминации1<>ТехЗадание.МатериалЛаминации1) ИЛИ (ШиринаСырьяМатериалаЛаминации1<>ТехЗадание.ШиринаСырьяМатериалаЛаминации1) ИЛИ (МатериалЛаминации2<>ТехЗадание.МатериалЛаминации2) ИЛИ (ШиринаСырьяМатериалаЛаминации2<>ТехЗадание.ШиринаСырьяМатериалаЛаминации2) Тогда ТехЗадание.ОсновнойМатериал=ОсновнойМатериал; ТехЗадание.ШиринаСырьяОсновногоМатериала=ШиринаСырьяОсновногоМатериала; ТехЗадание.МатериалЛаминации1=МатериалЛаминации1; ТехЗадание.ШиринаСырьяМатериалаЛаминации1=ШиринаСырьяМатериалаЛаминации1; ТехЗадание.МатериалЛаминации2=МатериалЛаминации2; ТехЗадание.ШиринаСырьяМатериалаЛаминации2=ШиринаСырьяМатериалаЛаминации2; НужнаЗапись=1; Если ПустоеЗначение(ТекстВопроса)=0 Тогда ТекстВопроса=ТекстВопроса+РазделительСтрок; КонецЕсли; ТекстВопроса=ТекстВопроса+"Изменились параметры материала."; КонецЕсли; Если ИТСтрокиДокумента.РазверткаДизайна<>ТехЗадание.Развертка Тогда ТехЗадание.Развертка=ИТСтрокиДокумента.РазверткаДизайна; НужнаЗапись=1; Если ПустоеЗначение(ТекстВопроса)=0 Тогда ТекстВопроса=ТекстВопроса+РазделительСтрок; КонецЕсли; ТекстВопроса=ТекстВопроса+"Изменилась Развертка."; КонецЕсли; Если ИТСтрокиДокумента.ТипПакета<>ТехЗадание.ТипПакета Тогда ТехЗадание.ТипПакета=ИТСтрокиДокумента.ТипПакета; НужнаЗапись=1; Если ПустоеЗначение(ТекстВопроса)=0 Тогда ТекстВопроса=ТекстВопроса+РазделительСтрок; КонецЕсли; ТекстВопроса=ТекстВопроса+"Изменилась Тип пакета."; КонецЕсли; Если ИТСтрокиДокумента.Дизайн<>ТехЗадание.Дизайн Тогда ТехЗадание.Дизайн=ИТСтрокиДокумента.Дизайн; НужнаЗапись=1; Если ПустоеЗначение(ТекстВопроса)=0 Тогда ТекстВопроса=ТекстВопроса+РазделительСтрок; КонецЕсли; ТекстВопроса=ТекстВопроса+"Изменилась Дизайн."; КонецЕсли; Если ИТСтрокиДокумента.НомерСтрокиДокумента<>ТехЗадание.НомерСтрокиВРасчетеВладельце Тогда ТехЗадание.НомерСтрокиВРасчетеВладельце=ИТСтрокиДокумента.НомерСтрокиДокумента; НужнаЗапись=1; КонецЕсли; Если (ТехЗадание.ВысотаЗапечатки=0) Тогда ТехЗадание.ВысотаЗапечатки=ИТСтрокиДокумента.ШагПечати; НужнаЗапись=1; Если ПустоеЗначение(ТекстВопроса)=0 Тогда ТекстВопроса=ТекстВопроса+РазделительСтрок; КонецЕсли; ТекстВопроса=ТекстВопроса+"ВысотаЗапечатки в ТЗ=0 ."; КонецЕсли; Если (ИТСтрокиДокумента.ШагПечати<>ТехЗадание.ШагПечати) ИЛИ (ИТСтрокиДокумента.ШиринаДорожки<>ТехЗадание.ШиринаДорожки) ИЛИ (ИТСтрокиДокумента.БоковаяЗакладка<>ТехЗадание.БоковаяЗакладка) ИЛИ (ИТСтрокиДокумента.НижняяЗакладка<>ТехЗадание.НижняяЗакладка) ИЛИ (ИТСтрокиДокумента.ВерхняяЗакладка<>ТехЗадание.ВерхняяЗакладка) Тогда ТехЗадание.ШагПечати=ИТСтрокиДокумента.ШагПечати; ТехЗадание.ШиринаДорожки=ИТСтрокиДокумента.ШиринаДорожки; ТехЗадание.БоковаяЗакладка=ИТСтрокиДокумента.БоковаяЗакладка; ТехЗадание.НижняяЗакладка=ИТСтрокиДокумента.НижняяЗакладка; ТехЗадание.ВерхняяЗакладка=ИТСтрокиДокумента.ВерхняяЗакладка; НужнаЗапись=1; Если ПустоеЗначение(ТекстВопроса)=0 Тогда ТекстВопроса=ТекстВопроса+РазделительСтрок; КонецЕсли; ТекстВопроса=ТекстВопроса+"Изменились размеры дизайна ."; КонецЕсли; Если (фРучнойВводШириныРисунка=1)И(ВысотаФормы<>0) Тогда ТехЗаданиеВысотаЗапечатки=ИТСтрокиДокумента.ВысотаФормы; Иначе ТехЗаданиеВысотаЗапечатки=ИТСтрокиДокумента.ШагПечати; КонецЕсли; Если (фРучнойВводШириныРисунка=1)И(ШиринаФормы<>0) Тогда НеобходимаяШиринаЗапечатки=ИТСтрокиДокумента.ШиринаФормы; НоваяШиринаЗапечатки=ИТСтрокиДокумента.ШиринаФормы; Иначе НеобходимаяШиринаЗапечатки=ИТСтрокиДокумента.ШиринаДорожки-(ТехЗадание.ПолеСправа+ТехЗадание.ПолеСлева); НоваяШиринаЗапечатки=ИТСтрокиДокумента.ШиринаДорожки; КонецЕсли; Если (ТехЗадание.ВысотаЗапечатки<>ТехЗаданиеВысотаЗапечатки) ИЛИ(ТехЗадание.ШиринаЗапечатки<>НеобходимаяШиринаЗапечатки) Тогда ТехЗадание.ВысотаЗапечатки=ТехЗаданиеВысотаЗапечатки; ТехЗадание.ШиринаЗапечатки=НоваяШиринаЗапечатки; ТехЗадание.ПолеСправа=0; ТехЗадание.ПолеСправа=0; НужнаЗапись=1; Если ПустоеЗначение(ТекстВопроса)=0 Тогда ТекстВопроса=ТекстВопроса+РазделительСтрок; КонецЕсли; ТекстВопроса=ТекстВопроса+"Изменились размеры рисунка ."; КонецЕсли; Если (ИТСтрокиДокумента.ТипРучки<>ТехЗадание.ТипРучки) ИЛИ (ИТСтрокиДокумента.ШиринаРучки<>ТехЗадание.ШиринаРучки) ИЛИ (ИТСтрокиДокумента.ДлинаРучки<>ТехЗадание.ДлинаРучки) Тогда ТехЗадание.ТипРучки=ИТСтрокиДокумента.ТипРучки; ТехЗадание.ШиринаРучки=ИТСтрокиДокумента.ШиринаРучки; ТехЗадание.ДлинаРучки=ИТСтрокиДокумента.ДлинаРучки; Если ПустоеЗначение(ТекстВопроса)=0 Тогда ТекстВопроса=ТекстВопроса+РазделительСтрок; КонецЕсли; ТекстВопроса=ТекстВопроса+"Изменились размеры ручки ."; НужнаЗапись=1; КонецЕсли; ИзменилисьКраски=0; Если ТаблицаКрасокДизайна.НомерИндекса("инКраска")=0 Тогда ТаблицаКрасокДизайна.ДобавитьИндекс("инКраска","Краска"); КонецЕсли; Если ТехЗадание.КоличествоСтрок()<>ТаблицаКрасокДизайна.КоличествоСтрок() Тогда ИзменилисьКраски=1; Иначе ТехЗадание.ВыбратьСтроки(); Пока ТехЗадание.ПолучитьСтроку()=1 Цикл НСТбКрасок=ТаблицаКрасокДизайна.НайтиСтроку("инКраска",ТехЗадание.Краска); Если НСТбКрасок=0 Тогда ИзменилисьКраски=1; Прервать; КонецЕсли; Если ТаблицаКрасокДизайна.ПолучитьЗначение(НСТбКрасок,"ПроцентЗапечатки")<>ТехЗадание.ПроцентЗапечатки Тогда ИзменилисьКраски=1; Прервать; КонецЕсли; Если ТаблицаКрасокДизайна.ПолучитьЗначение(НСТбКрасок,"Анилокс")<>ТехЗадание.Анилокс Тогда ИзменилисьКраски=1; Прервать; КонецЕсли; КонецЦикла; КонецЕсли; Если ИзменилисьКраски=1 Тогда ТехЗадание.УдалитьСтроки(); ТаблицаКрасокДизайна.ВыбратьСтроки(); Пока ТаблицаКрасокДизайна.ПолучитьСтроку()=1 Цикл Если ПустоеЗначение(ТаблицаКрасокДизайна.Краска)=1 Тогда Продолжить; КонецЕсли; ТехЗадание.НоваяСтрока(); ТехЗадание.Краска=ТаблицаКрасокДизайна.Краска; ТехЗадание.ПроцентЗапечатки=ТаблицаКрасокДизайна.ПроцентЗапечатки; ТехЗадание.Анилокс=ТаблицаКрасокДизайна.Анилокс; КонецЦикла; Если ПустоеЗначение(ТекстВопроса)=0 Тогда ТекстВопроса=ТекстВопроса+РазделительСтрок; КонецЕсли; ТекстВопроса=ТекстВопроса+"Изменились краски ."; НужнаЗапись=1; КонецЕсли; Если (ПустоеЗначение(ТехЗадание.ВидНамотки)=1)И(ПустоеЗначение(ИТСтрокиДокумента.ВидНамотки)=0) Тогда ТехЗадание.ВидНамотки=ИТСтрокиДокумента.ВидНамотки; НужнаЗапись=1; КонецЕсли; Если (ПустоеЗначение(ТехЗадание.ЕстьМетка)=1)И(ПустоеЗначение(ИТСтрокиДокумента.ЕстьМетка)=0) Тогда ТехЗадание.ЕстьМетка=ИТСтрокиДокумента.ЕстьМетка; НужнаЗапись=1; КонецЕсли; Если (ПустоеЗначение(ТехЗадание.РасположениеМетки)=1)И(ПустоеЗначение(ИТСтрокиДокумента.РасположениеМетки)=0) Тогда ТехЗадание.РасположениеМетки=ИТСтрокиДокумента.РасположениеМетки; НужнаЗапись=1; КонецЕсли; Если (ПустоеЗначение(ТехЗадание.РастояниеМеждуМетками)=1)И(ПустоеЗначение(ИТСтрокиДокумента.РастояниеМеждуМетками)=0) Тогда ТехЗадание.РастояниеМеждуМетками=ИТСтрокиДокумента.РастояниеМеждуМетками; НужнаЗапись=1; КонецЕсли; Если (ПустоеЗначение(ТехЗадание.РастояниеОтРисункаДоМетки)=1)И(ПустоеЗначение(ИТСтрокиДокумента.РастояниеОтРисункаДоМетки)=0) Тогда ТехЗадание.РастояниеОтРисункаДоМетки=ИТСтрокиДокумента.РастояниеОтРисункаДоМетки; НужнаЗапись=1; КонецЕсли; Если (ПустоеЗначение(ТехЗадание.ВысотаМетки)=1)И(ПустоеЗначение(ИТСтрокиДокумента.ВысотаМетки)=0) Тогда ТехЗадание.ВысотаМетки=ИТСтрокиДокумента.ВысотаМетки; НужнаЗапись=1; КонецЕсли; Если (ПустоеЗначение(ТехЗадание.ШиринаМетки)=1)И(ПустоеЗначение(ИТСтрокиДокумента.ШиринаМетки)=0) Тогда ТехЗадание.ШиринаМетки=ИТСтрокиДокумента.ШиринаМетки; НужнаЗапись=1; КонецЕсли; Если НужнаЗапись=1 Тогда Если ПустоеЗначение(ТекстВопроса)=0 Тогда ТекстВопроса=ТекстВопроса+РазделительСтрок; КонецЕсли; ТекстВопроса=ТекстВопроса+"Будет изменено Тех.Задание."+РазделительСтрок+"Продолжить?"; Ответ=Вопрос(ТекстВопроса,"Да+Нет+Отмена",30); Если Ответ="Да" Тогда тбИсторияДокументаТехЗадание=СоздатьОбъект("ТаблицаЗначений"); Если ПустоеЗначение(ТехЗадание.тбИсторияДокументаСтрокой)=0 Тогда тбИсторияДокументаТехЗадание.Загрузить(ЗначениеИзСтроки(ТехЗадание.тбИсторияДокументаСтрокой)); Иначе тбИсторияДокументаТехЗадание.НоваяКолонка("Пользователь","Справочник.Пользователи"); тбИсторияДокументаТехЗадание.НоваяКолонка("ДатаИзменения","Дата"); тбИсторияДокументаТехЗадание.НоваяКолонка("ВремяИзменения","Строка",10); тбИсторияДокументаТехЗадание.НоваяКолонка("Атрибут","Строка",100); тбИсторияДокументаТехЗадание.НоваяКолонка("Действие","Строка",100); КонецЕсли; ВспомогПроцедура(тбИсторияДокументаТехЗадание,"Изменения",глПользователь,"Изменеие", "Изменен документ на основании расчета "+ТекущийДокумент()); ТехЗадание.тбИсторияДокументаСтрокой=ЗначениеВСтроку(тбИсторияДокументаТехЗадание); ТехЗадание.Записать(); ИначеЕсли Ответ="Нет" Тогда Иначе Возврат; КонецЕсли; КонецЕсли; КонецЕсли; Если ТехЗадание.РасчетВладелец<>ТекущийДокумент() Тогда ТехЗадание.РасчетВладелец=ТекущийДокумент(); ТехЗадание.Записать(); КонецЕсли; ТехническоеЗадание=ТехЗадание.ТекущийДокумент(); Значение=""; ОткрытьФорму(ТехническоеЗадание,Значение,-1); КонецЦикла; КонецПроцедуры //------------------------------------------------------------------------------------------------------------ Процедура СоздатьЗаказБезОткрытияФормы() Если тбКонтрагенты.КоличествоСтрок()=0 Тогда СтатусВозврата(0); Возврат; КонецЕсли; Если Выбран()=0 Тогда Записать(); КонецЕсли; ПредварительныйЗаказ=СоздатьОбъект("Документ.ПредварительныйЗаказ"); Для ы=1 По тбКонтрагенты.КоличествоСтрок() Цикл Если ПустоеЗначение(тбКонтрагенты.ПолучитьЗначение(ы,"ЗаказВакиля"))=0 Тогда Продолжить; КонецЕсли; ПредварительныйЗаказ.Новый(); ПредварительныйЗаказ.АвтоВремяТекущее(); ПредварительныйЗаказ.НашаФирма=НашаФирма; ВыбранКонтрагент=тбКонтрагенты.ПолучитьЗначение(ы,"Контрагент"); ТекМенеджер=тбКонтрагенты.ПолучитьЗначение(ы,"Менеджер"); ПредварительныйЗаказ.Фирма= Фирма; ПредварительныйЗаказ.Валюта= Валюта; ПредварительныйЗаказ.НомерДок= ""; глУстановитьНомер(ПредварительныйЗаказ,1,0,Фирма); ПредварительныйЗаказ.Контрагент=ВыбранКонтрагент; ПредварительныйЗаказ.Менеджер=ТекМенеджер; НеобходимаЗаписьЗаказа=0; КлассификаторЕдИзм=СоздатьОбъект("Справочник.КлассификаторЕдИзм"); Если КакСчитаем=СчитаемОтМассы Тогда КлассификаторЕдИзм.НайтиПоНаименованию("кг.",0,1); ЕдИзм=КлассификаторЕдИзм.ТекущийЭлемент(); ИначеЕсли КакСчитаем=СчитаемОтТиража Тогда КлассификаторЕдИзм.НайтиПоНаименованию("шт.",0,1); ЕдИзм=КлассификаторЕдИзм.ТекущийЭлемент(); Иначе ЕдИзм=""; КонецЕсли; Если (ПустоеЗначение(ЕдИзм)=0)И(ЕдИзм<>ПредварительныйЗаказ.ЕдИзм) Тогда ПредварительныйЗаказ.ЕдИзм=ЕдИзм; НеобходимаЗаписьЗаказа=1; КонецЕсли; Если НеобходимаЗаписьЗаказа=1 Тогда ПредварительныйЗаказ.Автор=глПользователь; ПредварительныйЗаказ.Записать(); СоздалиИЗаписалиНовыйЗаказ=1; КонецЕсли; ВыбранЗаказ=ПредварительныйЗаказ.ТекущийДокумент(); Если ы=ТекСтрокатбКонтрагенты Тогда Заказ=ВыбранЗаказ; КонецЕсли; тбКонтрагенты.УстановитьЗначение(ы,"ЗаказВакиля",ВыбранЗаказ); КонецЦикла; НомерЗаказа=ВернутьСписокНомеровЗаказовСтрокой("+") ; КонецПроцедуры //------------------------------------------------------------------------------------------------------------ Процедура ОткрытьЗаказ() Если ТекСтрокатбКонтрагенты=0 Тогда ТекСтрокатбКонтрагенты=1; КонецЕсли; ВыбранЗаказ=тбКонтрагенты.ПолучитьЗначение(ТекСтрокатбКонтрагенты,"ЗаказВакиля"); УстановленнаяЦенаТекЗаказчика=тбКонтрагенты.ПолучитьЗначение(ТекСтрокатбКонтрагенты,"УстановленнаяЦена"); УстановленныйОбъемТекЗаказчика=тбКонтрагенты.ПолучитьЗначение(ТекСтрокатбКонтрагенты,"УстановленныйОбъем"); РентабельностьЗаказаТекЗаказчика=тбКонтрагенты.ПолучитьЗначение(ТекСтрокатбКонтрагенты,"РентабельностьЗаказа"); ФормыПродаютсяОтдельноТекЗаказчика=тбКонтрагенты.ПолучитьЗначение(ТекСтрокатбКонтрагенты,"фДругаяСтоимостьФорм"); Если ПустоеЗначение(ВыбранЗаказ)<>1 Тогда КонтекстЗаказа=""; ОткрытьФорму(ВыбранЗаказ,КонтекстЗаказа); КлассификаторЕдИзм=СоздатьОбъект("Справочник.КлассификаторЕдИзм"); Если КакСчитаем=СчитаемОтМассы Тогда КлассификаторЕдИзм.НайтиПоНаименованию("кг.",0,1); ЕдИзм=КлассификаторЕдИзм.ТекущийЭлемент(); ИначеЕсли КакСчитаем=СчитаемОтТиража Тогда КлассификаторЕдИзм.НайтиПоНаименованию("шт.",0,1); ЕдИзм=КлассификаторЕдИзм.ТекущийЭлемент(); Иначе ЕдИзм=""; КонецЕсли; Если ВыбранЗаказ.Вид()="ЗаказВакиля" Тогда СредныйВес1ТысячиВсехДизайнов=НормыРасчета.СредныйВес1ТысячиВсехДизайнов(); Если (СредныйВес1ТысячиВсехДизайнов<>0)И(СредныйВес1ТысячиВсехДизайнов<>ВыбранЗаказ.ВесТысячиШтук) Тогда КонтекстЗаказа.ВесТысячиШтук=СредныйВес1ТысячиВсехДизайнов; КонецЕсли; Если КакСчитаем=СчитаемОтМассы Тогда ПроектныйОбъемТекЗаказа=УстановленныйОбъемТекЗаказчика; ПроектныйОбъемТекЗаказаВКГ=УстановленныйОбъемТекЗаказчика; ИначеЕсли КакСчитаем=СчитаемОтТиража Тогда ПроектныйОбъемТекЗаказа=УстановленныйОбъемТекЗаказчика*1000; ПроектныйОбъемТекЗаказаВКГ=СредныйВес1ТысячиВсехДизайнов*УстановленныйОбъемТекЗаказчика; Иначе ПроектныйОбъемТекЗаказа=0; ПроектныйОбъемТекЗаказаВКГ=0; КонецЕсли; Если (УстановленнаяЦенаТекЗаказчика<>0)И(ОбщийПродажныйОбъем<>0) И(УстановленныйОбъемТекЗаказчика<>0) Тогда СуммаЗаказа=УстановленнаяЦенаТекЗаказчика*УстановленныйОбъемТекЗаказчика; УстановленнаяЦенаПродажи =УстановленнаяЦенаТекЗаказчика; Если ВыбранЗаказ.Валюта<>Валюта Тогда СуммаЗаказа=глПересчетТорг(СуммаЗаказа,Валюта,ВыбранЗаказ.ДатаДок,ВыбранЗаказ.Валюта,ВыбранЗаказ.ДатаДок,ВыбранЗаказ.ДатаДок); УстановленнаяЦенаПродажи=глПересчетТорг(УстановленнаяЦенаПродажи,Валюта,ВыбранЗаказ.ДатаДок,ВыбранЗаказ.Валюта,ВыбранЗаказ.ДатаДок,ВыбранЗаказ.ДатаДок); КонецЕсли; Если ВыбранЗаказ.УстановленнаяЦенаПродажи<>УстановленнаяЦенаПродажи Тогда КонтекстЗаказа.УстановленнаяЦенаПродажи=УстановленнаяЦенаПродажи; КонецЕсли; Если ВыбранЗаказ.ПроектныйОбъемЗаказа<>ПроектныйОбъемТекЗаказа Тогда КонтекстЗаказа.ПроектныйОбъемЗаказа=ПроектныйОбъемТекЗаказа; КонтекстЗаказа.ПроектныйОбъемЗаказаВКГ=ПроектныйОбъемТекЗаказаВКГ; КонецЕсли; Если ВыбранЗаказ.ПроектнаяСуммаЗаказа<>СуммаЗаказа Тогда КонтекстЗаказа.ПроектнаяСуммаЗаказа=СуммаЗаказа; КонецЕсли; Если ВыбранЗаказ.Рентабельность<>РентабельностьЗаказаТекЗаказчика Тогда КонтекстЗаказа.Рентабельность=РентабельностьЗаказаТекЗаказчика; КонецЕсли; КонецЕсли; Если ВыбранЗаказ.ФормыПродаютсяОтдельно<>ФормыПродаютсяОтдельноТекЗаказчика Тогда КонтекстЗаказа.ФормыПродаютсяОтдельно=ФормыПродаютсяОтдельноТекЗаказчика; КонецЕсли; КонецЕсли; Если (ПустоеЗначение(ЕдИзм)=0)И(ЕдИзм<>ВыбранЗаказ.ЕдИзм) Тогда КонтекстЗаказа.ЕдИзм=ЕдИзм; КонецЕсли; Иначе СоздатьЗаказБезОткрытияФормы(); ОткрытьФорму(Заказ); КонецЕсли; НомерЗаказа=ВернутьСписокНомеровЗаказовСтрокой("+") ; ОбновитьТаблицыДокумента(); КонецПроцедуры //====================================================================== Процедура ОткрытьЗаказКПЗ() ВыбранЗаказ=тбКонтрагенты.ПолучитьЗначение(ТекСтрокатбКонтрагенты,"ЗаказВакиля"); Если ПустоеЗначение(ВыбранЗаказ)=1 Тогда Возврат; ИначеЕсли ВыбранЗаказ.Вид()<>"ЗаказВакиля" Тогда Возврат; КонецЕсли; ОткрытьФорму(ВыбранЗаказ); КонецПроцедуры // //------------------------------------------------------------------------------------------------------------ Процедура ИзмТекЗаказ() тбКонтрагенты.УстановитьЗначение(ТекСтрокатбКонтрагенты,"ЗаказВакиля",Заказ); НомерЗаказа=ВернутьСписокНомеровЗаказовСтрокой("+") ; ОбновитьТаблицыДокумента(); КонецПроцедуры //------------------------------------------------------------------------------------------------------------ Процедура ОбработкаВыбораЗначения(ВыбЗнач,ИдентЭлемДиалога,ФлагСтандОбр) Если (ИдентЭлемДиалога="ОсновнойМатериал") или (ИдентЭлемДиалога="МатериалЛаминации1") или (ИдентЭлемДиалога="МатериалЛаминации2")Тогда Если ПустоеЗначение(ВыбЗнач)=0 Тогда Если (фЭкструзия=1) Тогда Если ПустоеЗначение(ВыбЗнач.Замес)=1 Тогда Сообщить("Для "+ВыбЗнач+" не установлен замес"); ФлагСтандОбр=0; Возврат; КонецЕсли; Иначе //Периодический=СоздатьОбъект("Периодический"); //Периодический.ИспользоватьОбъект("Цена",ВыбЗнач); //Периодический.ВыбратьЗначения(НачМесяца(ДатаДляЭкономистов),КонМесяца(ДатаДляЭкономистов)); //ЦенаАктуальна=0; //Если Периодический.ПолучитьЗначение()=1 Тогда // ЦенаАктуальна=1; //КонецЕсли; ЦенаАктуальна = ВернутьАктуальностьЦены(ВыбЗнач); Если ЦенаАктуальна=0 Тогда Сообщить("Для "+ВыбЗнач+" не установлена актуальная цена"); ФлагСтандОбр=0; Возврат; КонецЕсли; КонецЕсли; КонецЕсли; КонецЕсли; КонецПроцедуры //------------------------------------------------------------------------------------------------------------ Процедура ПриНачалеВыбораЗначения(ИдентЭлемДиалога,ФлагСтандОбр) Если (ИдентЭлемДиалога="ОбьемДляЭкономистов") Тогда Иначе Если(ИмяПользователя()="zk96") Тогда Иначе Если (Проведен()=1) Тогда Предупреждение("Нельзя изменять в поведенном документе!"); ФлагСтандОбр=0; СтатусВозврата(0); Возврат; КонецЕсли; КонецЕсли; КонецЕсли; спрПоизводственныеМатериалы=СоздатьОбъект("Справочник.ПоизводственныеМатериалы"); Если спрПоизводственныеМатериалы.НайтиПоНаименованию(СокрЛП(Константа.ГруппаСправочникаПроизвМатериалы),0) =1 Тогда Родитель= спрПоизводственныеМатериалы.ТекущийЭлемент(); Иначе Родитель=""; КонецЕсли; Если (ИдентЭлемДиалога="ОсновнойМатериал") Тогда ОсновнойМатериал.ИспользоватьРодителя(Родитель,0); ИначеЕсли (ИдентЭлемДиалога="МатериалЛаминации1") Тогда МатериалЛаминации1.ИспользоватьРодителя(Родитель,0); ИначеЕсли (ИдентЭлемДиалога="МатериалЛаминации2") Тогда МатериалЛаминации2.ИспользоватьРодителя(Родитель,0); ИначеЕсли (ИдентЭлемДиалога="ЗаказВакиля") Тогда ОткрытьФорму("Журнал.Заказы.ДляВыбора",Контекст); ФлагСтандОбр=0; ИначеЕсли (ИдентЭлемДиалога="Контрагент1") Тогда СтарыйТекЗаказчик=Контрагент1; КонецЕсли; КонецПроцедуры //------------------------------------------------------------------------------------------------------------ Процедура ЗаписатьПоКонтрагентуТаблицуМассыТаблицуОплаты(спрЭлементТаблицыКонтрагентовРасчета, ТаблицаРасчетнаяМасса, ТаблицаОплаты) ЭлементыТаблицыМассыРасчетов=СоздатьОбъект("Справочник.ЭлементыТаблицыМассыРасчетов"); ЭлементыТаблицыОплатыРасчетов=СоздатьОбъект("Справочник.ЭлементыТаблицыОплатыРасчетов"); ЭлементыТаблицыМассыРасчетов.ИспользоватьВладельца(спрЭлементТаблицыКонтрагентовРасчета); ТаблицаРасчетнаяМасса.ВыбратьСтроки(); Пока ТаблицаРасчетнаяМасса.ПолучитьСтроку()=1 Цикл Если (ТаблицаРасчетнаяМасса.Тираж=0)И(ТаблицаРасчетнаяМасса.Масса=0) Тогда Продолжить; КонецЕсли; ЭлементыТаблицыМассыРасчетов.Новый(); ЭлементыТаблицыМассыРасчетов.Тираж=ТаблицаРасчетнаяМасса.Тираж; ЭлементыТаблицыМассыРасчетов.Масса=ТаблицаРасчетнаяМасса.Масса; ЭлементыТаблицыМассыРасчетов.НормаОсновногоМатериала=ТаблицаРасчетнаяМасса.НормаОсновногоМатериала; ЭлементыТаблицыМассыРасчетов.НормаМатериалаЛаминации1=ТаблицаРасчетнаяМасса.НормаМатериалаЛаминации1; ЭлементыТаблицыМассыРасчетов.НормаМатериалаЛаминации2=ТаблицаРасчетнаяМасса.НормаМатериалаЛаминации2; ЭлементыТаблицыМассыРасчетов.Себистоимость=ТаблицаРасчетнаяМасса.Себистоимость; ЭлементыТаблицыМассыРасчетов.НеРентабельно=ТаблицаРасчетнаяМасса.НеРентабельно; ЭлементыТаблицыМассыРасчетов.Прибыльно=ТаблицаРасчетнаяМасса.Прибыльно; ЭлементыТаблицыМассыРасчетов.Премиально=ТаблицаРасчетнаяМасса.Премиально; ЭлементыТаблицыМассыРасчетов.ДопНакруткаНеРентабельно=ТаблицаРасчетнаяМасса.ДопНакруткаНеРентабельно; ЭлементыТаблицыМассыРасчетов.ДопНакруткаПрибыльно=ТаблицаРасчетнаяМасса.ДопНакруткаПрибыльно; ЭлементыТаблицыМассыРасчетов.ДопНакруткаПремиально=ТаблицаРасчетнаяМасса.ДопНакруткаПремиально; ЭлементыТаблицыМассыРасчетов.Кол_квМТиража=ТаблицаРасчетнаяМасса.Кол_квМТиража; ЭлементыТаблицыМассыРасчетов.КолПогонМетровТиража=ТаблицаРасчетнаяМасса.КолПогонМетровТиража; ЭлементыТаблицыМассыРасчетов.СтоимостьНеРентабельно=ТаблицаРасчетнаяМасса.СтоимостьНеРентабельно; ЭлементыТаблицыМассыРасчетов.СтоимостьОтсрочкиНеРентабельно=ТаблицаРасчетнаяМасса.СтоимостьОтсрочкиНеРентабельно; ЭлементыТаблицыМассыРасчетов.ПродСтоимостьНеРентабельно=ТаблицаРасчетнаяМасса.ПродСтоимостьНеРентабельно; ЭлементыТаблицыМассыРасчетов.СтоимостьПрибыльно=ТаблицаРасчетнаяМасса.СтоимостьПрибыльно; ЭлементыТаблицыМассыРасчетов.СтоимостьОтсрочкиПрибыльно=ТаблицаРасчетнаяМасса.СтоимостьОтсрочкиПрибыльно; ЭлементыТаблицыМассыРасчетов.ПродСтоимостьПрибыльно=ТаблицаРасчетнаяМасса.ПродСтоимостьПрибыльно; ЭлементыТаблицыМассыРасчетов.СтоимостьПремиально=ТаблицаРасчетнаяМасса.СтоимостьПремиально; ЭлементыТаблицыМассыРасчетов.СтоимостьОтсрочкиПремиально=ТаблицаРасчетнаяМасса.СтоимостьОтсрочкиПремиально; ЭлементыТаблицыМассыРасчетов.ПродСтоимостьПремиально=ТаблицаРасчетнаяМасса.ПродСтоимостьПремиально; ЭлементыТаблицыМассыРасчетов.Записать(); КонецЦикла; ЭлементыТаблицыОплатыРасчетов.ИспользоватьВладельца(спрЭлементТаблицыКонтрагентовРасчета); ТаблицаОплаты.ВыбратьСтроки(); Пока ТаблицаОплаты.ПолучитьСтроку()=1 Цикл ЭлементыТаблицыОплатыРасчетов.Новый(); ЭлементыТаблицыОплатыРасчетов.Процент=ТаблицаОплаты.Процент; ЭлементыТаблицыОплатыРасчетов.КвоДней=ТаблицаОплаты.КвоДней; ЭлементыТаблицыОплатыРасчетов.Записать(); КонецЦикла; КонецПроцедуры //============================================================== Функция ЗаписатьТаблицуКонтрагентовИСвязанныеСНей() ТаблицыКонтрагентовРасчетов=СоздатьОбъект("Справочник.ТаблицыКонтрагентовРасчетов"); ЭлементыТаблицыКонтрагентовРасчетов=СоздатьОбъект("Справочник.ЭлементыТаблицыКонтрагентовРасчетов"); ЭлементыТаблицыМассыРасчетов=СоздатьОбъект("Справочник.ЭлементыТаблицыМассыРасчетов"); ЭлементыТаблицыОплатыРасчетов=СоздатьОбъект("Справочник.ЭлементыТаблицыОплатыРасчетов"); ЕстьТаблица=0; Если (ПустоеЗначение(Контрагент)<>1)И(Контрагент.Вид()="ТаблицыКонтрагентовРасчетов") Тогда Если Контрагент.ДокументВладелец=ТекущийДокумент() Тогда ЕстьТаблица=1; ТаблицыКонтрагентовРасчетов.НайтиЭлемент(Контрагент); КонецЕсли; КонецЕсли; Если ЕстьТаблица=0 Тогда ТаблицыКонтрагентовРасчетов.Новый(); ТаблицыКонтрагентовРасчетов.ДокументВладелец=ТекущийДокумент(); ТаблицыКонтрагентовРасчетов.Записать(); КонецЕсли; спрТаблицаКонтрагентовРасчета= ТаблицыКонтрагентовРасчетов.ТекущийЭлемент(); //очищаем таблицы контрагентов и все связанные с ними ЭлементыТаблицыКонтрагентовРасчетов.ИспользоватьВладельца(спрТаблицаКонтрагентовРасчета); ЭлементыТаблицыКонтрагентовРасчетов.ВыбратьЭлементы(); Пока ЭлементыТаблицыКонтрагентовРасчетов.ПолучитьЭлемент()=1 Цикл спрЭлементТаблицыКонтрагентов= ЭлементыТаблицыКонтрагентовРасчетов.ТекущийЭлемент(); ЭлементыТаблицыМассыРасчетов.ИспользоватьВладельца(спрЭлементТаблицыКонтрагентов); ЭлементыТаблицыМассыРасчетов.ВыбратьЭлементы(); Пока ЭлементыТаблицыМассыРасчетов.ПолучитьЭлемент()=1 Цикл ЭлементыТаблицыМассыРасчетов.Удалить(1); КонецЦикла; ЭлементыТаблицыОплатыРасчетов.ИспользоватьВладельца(спрЭлементТаблицыКонтрагентов); ЭлементыТаблицыОплатыРасчетов.ВыбратьЭлементы(); Пока ЭлементыТаблицыОплатыРасчетов.ПолучитьЭлемент()=1 Цикл ЭлементыТаблицыОплатыРасчетов.Удалить(1); КонецЦикла; ЭлементыТаблицыКонтрагентовРасчетов.Удалить(1); КонецЦикла; КвоСтрок=тбКонтрагенты.КоличествоСтрок(); КвоПлюсов=КвоСтрок-1; РазмерОдногоНаименования=(100-КвоПлюсов)/КвоСтрок; НаимТаблицыКонтрагентовРасчетов=""; ЭлементыТаблицыКонтрагентовРасчетов.ИспользоватьВладельца(спрТаблицаКонтрагентовРасчета); тбКонтрагенты.ВыбратьСтроки(); Пока тбКонтрагенты.ПолучитьСтроку()=1 Цикл ЭлементыТаблицыКонтрагентовРасчетов.Новый(); ЭлементыТаблицыКонтрагентовРасчетов.Контрагент=тбКонтрагенты.Контрагент; ЭлементыТаблицыКонтрагентовРасчетов.Менеджер=тбКонтрагенты.Менеджер; ЭлементыТаблицыКонтрагентовРасчетов.Оплата1=тбКонтрагенты.Оплата1; ЭлементыТаблицыКонтрагентовРасчетов.Оплата2=тбКонтрагенты.Оплата2; ЭлементыТаблицыКонтрагентовРасчетов.КоефициентОтОбщегоЗаказа=тбКонтрагенты.КоефициентОтОбщегоЗаказа; ЭлементыТаблицыКонтрагентовРасчетов.Безнал=тбКонтрагенты.Безнал; ЭлементыТаблицыКонтрагентовРасчетов.Нал=тбКонтрагенты.Нал; ЭлементыТаблицыКонтрагентовРасчетов.ЧьяДоставка=тбКонтрагенты.ЧьяДоставка; ЭлементыТаблицыКонтрагентовРасчетов.ВыборДоставки=тбКонтрагенты.ВыборДоставки; ЭлементыТаблицыКонтрагентовРасчетов.фДругаяСтоимостьФорм=тбКонтрагенты.фДругаяСтоимостьФорм; ЭлементыТаблицыКонтрагентовРасчетов.СебистоимостьПечатныхФорм=тбКонтрагенты.СебистоимостьПечатныхФорм; ЭлементыТаблицыКонтрагентовРасчетов.ПродажнаяСтоимостьФорм=тбКонтрагенты.ПродажнаяСтоимостьФорм; ЭлементыТаблицыКонтрагентовРасчетов.УстановленныйОбъем=тбКонтрагенты.УстановленныйОбъем; ЭлементыТаблицыКонтрагентовРасчетов.НестандартныйОбъем=тбКонтрагенты.НестандартныйОбъем; ЭлементыТаблицыКонтрагентовРасчетов.УстановленнаяЦенаБезФорм=тбКонтрагенты.УстановленнаяЦенаБезФорм; ЭлементыТаблицыКонтрагентовРасчетов.УстановленнаяЦена=тбКонтрагенты.УстановленнаяЦена; ЭлементыТаблицыКонтрагентовРасчетов.Откат=тбКонтрагенты.Откат; ЭлементыТаблицыКонтрагентовРасчетов.УстановленнаяЦенаПоДокументам=тбКонтрагенты.УстановленнаяЦенаПоДокументам; ЭлементыТаблицыКонтрагентовРасчетов.РентабельностьЗаказа=тбКонтрагенты.РентабельностьЗаказа; ЭлементыТаблицыКонтрагентовРасчетов.ЗаказВакиля=тбКонтрагенты.ЗаказВакиля; ЭлементыТаблицыКонтрагентовРасчетов.Записать(); спрЭлементТаблицыКонтрагентовРасчета= ЭлементыТаблицыКонтрагентовРасчетов.ТекущийЭлемент(); ЗаписатьПоКонтрагентуТаблицуМассыТаблицуОплаты(спрЭлементТаблицыКонтрагентовРасчета, тбКонтрагенты.тбРасчетнаяМасса,тбКонтрагенты.тбОплаты); НаимТаблицыКонтрагентовРасчетов=НаимТаблицыКонтрагентовРасчетов+Лев(тбКонтрагенты.Контрагент.Наименование,РазмерОдногоНаименования); Если тбКонтрагенты.НомерСтроки<>КвоСтрок Тогда НаимТаблицыКонтрагентовРасчетов=НаимТаблицыКонтрагентовРасчетов+"+"; КонецЕсли; КонецЦикла; ТаблицыКонтрагентовРасчетов.Наименование=НаимТаблицыКонтрагентовРасчетов; ТаблицыКонтрагентовРасчетов.Записать(); Возврат ТаблицыКонтрагентовРасчетов.ТекущийЭлемент(); КонецФункции //------------------------------------------------------------------------------------------------------------ Функция ЗаписатьТаблицуКрасокДизайна(спрТаблицаКрасок,ТаблицаКрасок) ЭлементыТаблицыКрасок=СоздатьОбъект("Справочник.ЭлементыТаблицыКрасокДизайнов"); ЭлементыТаблицыКрасок.ИспользоватьВладельца(спрТаблицаКрасок); ЭлементыТаблицыКрасок.ВыбратьЭлементы(); Пока ЭлементыТаблицыКрасок.ПолучитьЭлемент()=1 Цикл ЭлементыТаблицыКрасок.Удалить(1); КонецЦикла; ТаблицаКрасок.ВыбратьСтроки(); Пока ТаблицаКрасок.ПолучитьСтроку()=1 Цикл Краска=ТаблицаКрасок.Краска; Если ПустоеЗначение(Краска)=1 Тогда Продолжить; КонецЕсли; ЭлементыТаблицыКрасок.Новый(); ЭлементыТаблицыКрасок.Краска=ТаблицаКрасок.Краска; ЭлементыТаблицыКрасок.ПроцентЗапечатки=ТаблицаКрасок.ПроцентЗапечатки; ЭлементыТаблицыКрасок.КолФотоФорм=ТаблицаКрасок.КвоФотоФорм; ЭлементыТаблицыКрасок.ПроцентСвязующего=ТаблицаКрасок.ПроцентСвязующего; ЭлементыТаблицыКрасок.Анилокс=ТаблицаКрасок.Анилокс; ЭлементыТаблицыКрасок.Записать(); КонецЦикла; Возврат спрТаблицаКрасок; КонецФункции //------------------------------------------------------------------------------------------------------------ Функция ЗаписатьОбщуюРасчетнуюТаблицу() ОбщиеТаблицыМассыРасчетов=СоздатьОбъект("Справочник.ОбщиеТаблицыМассыРасчетов"); ЭлементыОбщейТаблицыМассыРасчетов=СоздатьОбъект("Справочник.ЭлементыОбщейТаблицыМассыРасчетов"); ЕстьТаблица=0; Если ПустоеЗначение(ОбщаяТаблицаМассыРасчета)<>1 Тогда Если ОбщаяТаблицаМассыРасчета.ДокументВладелец=ТекущийДокумент() Тогда ЕстьТаблица=1; ОбщиеТаблицыМассыРасчетов.НайтиЭлемент(ОбщаяТаблицаМассыРасчета); КонецЕсли; КонецЕсли; Если ЕстьТаблица=0 Тогда ОбщиеТаблицыМассыРасчетов.Новый(); ОбщиеТаблицыМассыРасчетов.ДокументВладелец=ТекущийДокумент(); ОбщиеТаблицыМассыРасчетов.Записать(); КонецЕсли; спрОбщаяТаблицаМассыРасчетов=ОбщиеТаблицыМассыРасчетов.ТекущийЭлемент(); ЭлементыОбщейТаблицыМассыРасчетов.ИспользоватьВладельца(спрОбщаяТаблицаМассыРасчетов); //удаляем общую таблицу расчета ЭлементыОбщейТаблицыМассыРасчетов.ВыбратьЭлементы(); Пока ЭлементыОбщейТаблицыМассыРасчетов.ПолучитьЭлемент()=1 Цикл ЭлементыОбщейТаблицыМассыРасчетов.Удалить(1); КонецЦикла; ЭлементыОбщейТаблицыМассыРасчетов.ИспользоватьВладельца(спрОбщаяТаблицаМассыРасчетов); ОбщаяРасчетнаяТаблица.ВыбратьСтроки(); Пока ОбщаяРасчетнаяТаблица.ПолучитьСтроку()=1 Цикл Если (ОбщаяРасчетнаяТаблица.Тираж=0)и(ОбщаяРасчетнаяТаблица.Масса=0) Тогда Продолжить; КонецЕсли; ЭлементыОбщейТаблицыМассыРасчетов.Новый(); ЭлементыОбщейТаблицыМассыРасчетов.Тираж=ОбщаяРасчетнаяТаблица.Тираж; ЭлементыОбщейТаблицыМассыРасчетов.Масса=ОбщаяРасчетнаяТаблица.Масса; ЭлементыОбщейТаблицыМассыРасчетов.НормаОсновногоМатериала=ОбщаяРасчетнаяТаблица.НормаОсновногоМатериала; ЭлементыОбщейТаблицыМассыРасчетов.НормаМатериалаЛаминации1=ОбщаяРасчетнаяТаблица.НормаМатериалаЛаминации1; ЭлементыОбщейТаблицыМассыРасчетов.НормаМатериалаЛаминации2=ОбщаяРасчетнаяТаблица.НормаМатериалаЛаминации2; ЭлементыОбщейТаблицыМассыРасчетов.Себистоимость=ОбщаяРасчетнаяТаблица.Себистоимость; ЭлементыОбщейТаблицыМассыРасчетов.НеРентабельно=ОбщаяРасчетнаяТаблица.НеРентабельно; ЭлементыОбщейТаблицыМассыРасчетов.Прибыльно=ОбщаяРасчетнаяТаблица.Прибыльно; ЭлементыОбщейТаблицыМассыРасчетов.Премиально=ОбщаяРасчетнаяТаблица.Премиально; ЭлементыОбщейТаблицыМассыРасчетов.ДопНакруткаНеРентабельно=ОбщаяРасчетнаяТаблица.ДопНакруткаНеРентабельно; ЭлементыОбщейТаблицыМассыРасчетов.ДопНакруткаПрибыльно=ОбщаяРасчетнаяТаблица.ДопНакруткаПрибыльно; ЭлементыОбщейТаблицыМассыРасчетов.ДопНакруткаПремиально=ОбщаяРасчетнаяТаблица.ДопНакруткаПремиально; ЭлементыОбщейТаблицыМассыРасчетов.Кол_квМТиража=ОбщаяРасчетнаяТаблица.Кол_квМТиража; ЭлементыОбщейТаблицыМассыРасчетов.КолПогонМетровТиража=ОбщаяРасчетнаяТаблица.КолПогонМетровТиража; ЭлементыОбщейТаблицыМассыРасчетов.СтоимостьНеРентабельно=ОбщаяРасчетнаяТаблица.СтоимостьНеРентабельно; ЭлементыОбщейТаблицыМассыРасчетов.СтоимостьОтсрочкиНеРентабельно=ОбщаяРасчетнаяТаблица.СтоимостьОтсрочкиНеРентабельно; ЭлементыОбщейТаблицыМассыРасчетов.ПродСтоимостьНеРентабельно=ОбщаяРасчетнаяТаблица.ПродСтоимостьНеРентабельно; ЭлементыОбщейТаблицыМассыРасчетов.СтоимостьПрибыльно=ОбщаяРасчетнаяТаблица.СтоимостьПрибыльно; ЭлементыОбщейТаблицыМассыРасчетов.СтоимостьОтсрочкиПрибыльно=ОбщаяРасчетнаяТаблица.СтоимостьОтсрочкиПрибыльно; ЭлементыОбщейТаблицыМассыРасчетов.ПродСтоимостьПрибыльно=ОбщаяРасчетнаяТаблица.ПродСтоимостьПрибыльно; ЭлементыОбщейТаблицыМассыРасчетов.СтоимостьПремиально=ОбщаяРасчетнаяТаблица.СтоимостьПремиально; ЭлементыОбщейТаблицыМассыРасчетов.СтоимостьОтсрочкиПремиально=ОбщаяРасчетнаяТаблица.СтоимостьОтсрочкиПремиально; ЭлементыОбщейТаблицыМассыРасчетов.ПродСтоимостьПремиально=ОбщаяРасчетнаяТаблица.ПродСтоимостьПремиально; ЭлементыОбщейТаблицыМассыРасчетов.Записать(); КонецЦикла; Возврат спрОбщаяТаблицаМассыРасчетов; КонецФункции //------------------------------------------------------------------------------------------------------------ Процедура СохранитьТаблицуРасположенияДизайновНаВалу() Далее //============================================================== Процедура ЗаписатьТаблицы() ОбщаяТаблицаМассыРасчета= ЗаписатьОбщуюРасчетнуюТаблицу(); Контрагент= ЗаписатьТаблицуКонтрагентовИСвязанныеСНей(); спрТаблицыКрасок=СоздатьОбъект("Справочник.ТаблицыКрасокДизайнов"); ИТСтрокиДокумента.ВНачало(); Пока ИТСтрокиДокумента.СледующаяСтрока()=1 Цикл ЕстьТаблица=0; ТаблицаКрасокДизайна=ИТСтрокиДокумента.ТаблицаКрасок; ПолучитьСтрокуПоНомеру(ИТСтрокиДокумента.НомерСтрокиДокумента); Если ПустоеЗначение(КраскиДизайна)=0 Тогда Если КраскиДизайна.ДокументВладелец=ТекущийДокумент() Тогда ЕстьТаблица=1; КонецЕсли; КонецЕсли; Если ЕстьТаблица=0 Тогда спрТаблицыКрасок.Новый(); спрТаблицыКрасок.ДокументВладелец=ТекущийДокумент(); спрТаблицыКрасок.Дизайн=Дизайн; спрТаблицыКрасок.Записать(); КраскиДизайна=спрТаблицыКрасок.ТекущийЭлемент(); КонецЕсли; КраскиДизайна=ЗаписатьТаблицуКрасокДизайна(КраскиДизайна,ТаблицаКрасокДизайна); КонецЦикла; СохранитьТаблицуРасположенияДизайновНаВалу(); КонецПроцедуры //------------------------------------------------------------------------------------------------------------ Функция ЗаписатьДокумент() Если тбКонтрагенты.КоличествоСтрок()=0 Тогда Предупреждение("Не указан заказчик!"); Возврат 0; КонецЕсли; Если ПустоеЗначение(Менеджер)=1 Тогда Предупреждение("Не указан менеджер!"); Возврат 0; КонецЕсли; Если КоличествоСтрок()=0 Тогда Предупреждение("Не указано ни одного дизайна!"); Возврат 0; КонецЕсли; Если КвоДорожекНаВалу=0 Тогда Предупреждение("Не указано к-во дорожек на валу"); Возврат 0; КонецЕсли; ТекстСообщения="Записывается документ. Подождите!"; Состояние(ТекстСообщения); СформироватьФлажки(); ТаблицаТаблицКрасокДнаСтрокой=ЗначениеВСтроку(ТаблицаТаблицКрасокДна); сп=СоздатьОбъект("СписокЗначений"); сп.УдалитьВсе(); сп.ДобавитьЗначение(ОбьемДляЭкономистов); сп.ДобавитьЗначение(КолКвМТиражаДляЭкономистов); сп.ДобавитьЗначение(КолПМТиражаДляЭкономистов); сп.ДобавитьЗначение(ОбщаяГраматураПродукцииДляЭкономистов); сп.ДобавитьЗначение(тбОбщая); сп.ДобавитьЗначение(тбПроцессы); сп.ДобавитьЗначение(тбНакладныеЗатраты); сп.ДобавитьЗначение(тбБракИЗатраты); сп.ДобавитьЗначение(тбЗатратыКрасок); сп.ДобавитьЗначение(тбСтоимость); сп.ДобавитьЗначение(тбСтоимостьБезКлише); спДанныхЭкономистСтрСтрокой= СокрЛП(ЗначениеВСтроку(сп)); Если Выбран()=0 Тогда ТекстВопроса="Вы правильно указали фирму отгрузки?"; Если Вопрос(ТекстВопроса,"ОК+Отмена",60)<>"ОК" Тогда Возврат 0; КонецЕсли; Записать(); КонецЕсли; ОбъектП.ОткрытьОкноСообщения("Выполняется запись документа"); СоздатьЗаказБезОткрытияФормы(); Если СоздалиИЗаписалиНовыйЗаказ=1 Тогда СоздалиИЗаписалиНовыйЗаказ=0; КонецЕсли; НомерЗаказа=ВернутьСписокНомеровЗаказовСтрокой("+") ; СохранитьПредАтрибутыИТаблицы(тбКонтрагенты); тбКонтрагенты.ВыбратьСтроки(); Для ы=1 По 5 Цикл Если тбКонтрагенты.КоличествоСтрок()>=ы Тогда Значение=тбКонтрагенты.ПолучитьЗначение(ы,"Контрагент"); Иначе Значение=""; КонецЕсли; УстановитьАтрибут("Контрагент"+ы,Значение); КонецЦикла; ЗаписатьТаблицы(); Если фПодписьСогласованиеЦены=1 Тогда Если ОбновитьЗаказы()=0 Тогда ОбъектП.ЗакрытьОкноСообщения(); Возврат 0; КонецЕсли; ОткрытьЗаявкуНаСырье(0); КонецЕсли; ВспомогПроцедура(тбИсторияДокумента,"Изменения",глПользователь,"кЗаписать", "Произведена запись документа"); тбИсторияДокументаСтрокой=ЗначениеВСтроку(тбИсторияДокумента); ТекстСообщения=""; Состояние(ТекстСообщения); ОбъектП.ЗакрытьОкноСообщения(); Возврат 1; КонецФункции //------------------------------------------------------------------------------------------------------------ Процедура ПриЗаписи() Если ЗаписатьДокумент()=0 Тогда СтатусВозврата(0); Возврат; КонецЕсли; //Если Проведен()=1 Тогда // Провести(); //КонецЕсли; //СтрокаДействийФормы="#Записать Провести Закрыть"; КонецПроцедуры //------------------------------------------------------------------------------------------------------------ Функция МожноЛиОбновлятьЗаказы() глВсеВыбрано = 1; глВыбранЛи(Контрагент,"Контрагент"); глВыбранЛи(Менеджер,"Менеджер"); глВыбранЛи(ОсновнойМатериал,"Основной Материал"); Если РасчетСделан=0 Тогда глКомментарий("Не сделан перерасчет!",0,,"!"); глВсеВыбрано = 0; КонецЕсли; Экструзия=Число(Сред(Флажки,1,1)); Печать =Число(Сред(Флажки,2,1)); Ламинация=Число(Сред(Флажки,3,1)); Бабинорезка =Число(Сред(Флажки,4,1)); Пакетоделание=Число(Сред(Флажки,5,1)); Флексоформа =Число(Сред(Флажки,6,1)); //ф7 =Число(Сред(Флажки,7,1)); //ф8 =Число(Сред(Флажки,8,1)); глВсеВыбрано = ?(Экструзия+Печать+Ламинация+Бабинорезка+Пакетоделание+Флексоформа = 0, 0, глВсеВыбрано); Если (фПодписьМенеджера<>1) Тогда глКомментарий("Нет подписи менеджера!",0,,"!"); глВсеВыбрано = 0; КонецЕсли; Если (фПодписьТехнолога<>1) Тогда глКомментарий("Нет подписи технолога!",0,,"!"); глВсеВыбрано = 0; КонецЕсли; Если (фПодписьСогласованиеЦены<>1) Тогда глКомментарий("Нет подписи о согласование цены!",0,,"!"); глВсеВыбрано = 0; КонецЕсли; Возврат глВсеВыбрано; КонецФункции //------------------------------------------------------------------------------------------------------------ Функция ОбновитьЗаказы() Если МожноЛиОбновлятьЗаказы()=0 Тогда Возврат 0; КонецЕсли; тбЗаказы=СоздатьОбъект("ТаблицаЗначений"); тбЗаказы.НоваяКолонка("ЗаказВакиля","Документ"); тбЗаказы.НоваяКолонка("ПредварительныйЗаказ","Документ"); Для ы=1 По тбКонтрагенты.КоличествоСтрок() Цикл ИТДоки=СоздатьОбъект("ИндексированнаяТаблица"); ИТДоки.НоваяКолонка("Документ"); ИТДоки.НоваяКолонка("Контрагент"); ВыборкаСпецификаций=СоздатьОбъект("Документ"); ИТДоки.ДобавитьИндекс("инКонтрагент","Контрагент"); ТекЗаказчик=тбКонтрагенты.ПолучитьЗначение(ы,"Контрагент"); ТекМенеджер=тбКонтрагенты.ПолучитьЗначение(ы,"Менеджер"); ТекЗаказ=тбКонтрагенты.ПолучитьЗначение(ы,"ЗаказВакиля"); Если ТекЗаказ.Вид()="ПредварительныйЗаказ" Тогда ПредварительныйЗаказ=ТекЗаказ; ТекЗаказ=глСоздатьЗаказВакиляИзПредварительногоЗаказа(ПредварительныйЗаказ); СозданЗаказВакиля=1; тбКонтрагенты.УстановитьЗначение(ы,"ЗаказВакиля",ТекЗаказ); тбЗаказы.НоваяСтрока(); тбЗаказы.ПредварительныйЗаказ=ПредварительныйЗаказ; тбЗаказы.ЗаказВакиля=ТекЗаказ; КонецЕсли; КоефициентОтОбщегоЗаказа=тбКонтрагенты.ПолучитьЗначение(ы,"КоефициентОтОбщегоЗаказа"); УстановленныйОбъемТекЗаказчика=тбКонтрагенты.ПолучитьЗначение(ы,"УстановленныйОбъем"); ФормыПродаютсяОтдельноТекЗаказчика=тбКонтрагенты.ПолучитьЗначение(ы,"фДругаяСтоимостьФорм"); СебистоимостьПечатныхФормТекЗаказчика=тбКонтрагенты.ПолучитьЗначение(ы,"СебистоимостьПечатныхФорм"); ПродажнаяСтоимостьФормТекЗаказчика=тбКонтрагенты.ПолучитьЗначение(ы,"ПродажнаяСтоимостьФорм"); УстановленнаяЦенаБезФормТекЗаказчика=тбКонтрагенты.ПолучитьЗначение(ы,"УстановленнаяЦенаБезФорм"); УстановленнаяЦенаТекЗаказчика=тбКонтрагенты.ПолучитьЗначение(ы,"УстановленнаяЦена"); РентабельностьТекЗаказчика=тбКонтрагенты.ПолучитьЗначение(ы,"РентабельностьЗаказа"); ОткатТекЗаказчика=тбКонтрагенты.ПолучитьЗначение(ы,"Откат"); тбМассаТекЗаказчика=тбКонтрагенты.ПолучитьЗначение(ы,"тбРасчетнаяМасса");//,тбКонтрагенты.ПолучитьЗначение(ы,"тбОплаты тбМассаТекЗаказчика.ВыбратьСтроки(); тбМассаТекЗаказчика.ПолучитьСтроку(); ВыбранВесТысячиШтук=тбМассаТекЗаказчика.Масса/тбМассаТекЗаказчика.Тираж; ЦенаПоДокументамТекЗаказчика=тбКонтрагенты.ПолучитьЗначение(ы,"УстановленнаяЦенаПоДокументам"); тбМассаТекЗаказчика.ВыбратьСтроки(); Пока тбМассаТекЗаказчика.ПолучитьСтроку()=1 Цикл Если КакСчитаем=СчитаемОтМассы Тогда Если тбМассаТекЗаказчика.Масса=УстановленныйОбъемТекЗаказчика Тогда ПродСтоимостьПремиально=тбМассаТекЗаказчика.ПродСтоимостьПремиально; Если УстановленныйОбъемТекЗаказчика=0 Тогда ПремиальнаяЦенаТекЗаказчика=0; Иначе ПремиальнаяЦенаТекЗаказчика=ПродСтоимостьПремиально/УстановленныйОбъемТекЗаказчика; КонецЕсли; ПродСтоимостьПремиальноБезФорм=ПродСтоимостьПремиально-тбКонтрагенты.ПолучитьЗначение(ы,"СебистоимостьПечатныхФорм"); Если УстановленныйОбъемТекЗаказчика=0 Тогда ПремиальнаяЦенаБезФормТекЗаказчика=0; Иначе ПремиальнаяЦенаБезФормТекЗаказчика=ПродСтоимостьПремиальноБезФорм/УстановленныйОбъемТекЗаказчика; КонецЕсли; КонецЕсли; ИначеЕсли КакСчитаем=СчитаемОтТиража Тогда Если тбМассаТекЗаказчика.Тираж=УстановленныйОбъемТекЗаказчика Тогда ПродСтоимостьПремиально=тбМассаТекЗаказчика.ПродСтоимостьПремиально; Если УстановленныйОбъемТекЗаказчика=0 Тогда ПремиальнаяЦенаТекЗаказчика=0; Иначе ПремиальнаяЦенаТекЗаказчика=ПродСтоимостьПремиально/УстановленныйОбъемТекЗаказчика; КонецЕсли; ПродСтоимостьПремиальноБезФорм=ПродСтоимостьПремиально-тбКонтрагенты.ПолучитьЗначение(ы,"СебистоимостьПечатныхФорм"); Если УстановленныйОбъемТекЗаказчика=0 Тогда ПремиальнаяЦенаБезФормТекЗаказчика=0; Иначе ПремиальнаяЦенаБезФормТекЗаказчика=ПродСтоимостьПремиальноБезФорм/УстановленныйОбъемТекЗаказчика; КонецЕсли; КонецЕсли; КонецЕсли; КонецЦикла; ВыбранБезнал=тбКонтрагенты.ПолучитьЗначение(ы,"Безнал"); ВыбранОплата1=тбКонтрагенты.ПолучитьЗначение(ы,"Оплата1"); ВыбранОплата2=тбКонтрагенты.ПолучитьЗначение(ы,"Оплата2"); ВыбранОплата3=тбКонтрагенты.ПолучитьЗначение(ы,"тбОплаты").Итог("Процент"); ВыбранСрокОтсрочки=глНайтиМаксимальное(тбКонтрагенты.ПолучитьЗначение(ы,"тбОплаты"),"КвоДней"); ВыбранСпецификация=""; Если ВыбранБезнал<>0 Тогда ВыбранСпецификация=глВернутьСпецификациюПоРасчету(ТекущийДокумент(),ТекЗаказчик); КонецЕсли; Сумма= УстановленнаяЦенаТекЗаказчика*УстановленныйОбъемТекЗаказчика; КоллекцияПараметров=СоздатьОбъект("АссоциативныйВектор"); КоллекцияПараметров.Добавить("","КонтекстФормы"); КоллекцияПараметров.Добавить("","Заказчик"); КоллекцияПараметров.Добавить("","Менеджер"); КоллекцияПараметров.Добавить("","Заказ"); КоллекцияПараметров.Добавить(0,"КакСчитаем"); КоллекцияПараметров.Добавить(0,"КоефициентОтОбщегоЗаказа"); КоллекцияПараметров.Добавить(0,"ВесТысячиШтук"); КоллекцияПараметров.Добавить(0,"УстановленныйОбъем"); КоллекцияПараметров.Добавить(0,"ФормыПродаютсяОтдельно"); КоллекцияПараметров.Добавить(0,"СебистоимостьФорм"); КоллекцияПараметров.Добавить(0,"ПродажнаяСтоимостьФорм"); КоллекцияПараметров.Добавить(0,"ЦенаПоДокументам"); КоллекцияПараметров.Добавить(0,"УстановленнаяЦенаБезФорм"); КоллекцияПараметров.Добавить(0,"УстановленнаяЦена"); КоллекцияПараметров.Добавить("","Рентабельность"); КоллекцияПараметров.Добавить(0,"Откат"); КоллекцияПараметров.Добавить(0,"ПремиальнаяЦенаБезФорм"); КоллекцияПараметров.Добавить(0,"ПремиальнаяЦена"); КоллекцияПараметров.Добавить(0,"Безнал"); КоллекцияПараметров.Добавить(0,"Оплата1"); КоллекцияПараметров.Добавить(0,"Оплата2"); КоллекцияПараметров.Добавить(0,"Оплата3"); КоллекцияПараметров.Добавить(0,"СрокОтсрочки"); КоллекцияПараметров.Добавить("","Спецификация"); КонтекстФормы=глВернутьКонтекст(Контекст); КоллекцияПараметров.КонтекстФормы=КонтекстФормы; КоллекцияПараметров.Заказчик=ТекЗаказчик; КоллекцияПараметров.Менеджер=ТекМенеджер; КоллекцияПараметров.Заказ=ТекЗаказ; КоллекцияПараметров.КакСчитаем=КакСчитаем; КоллекцияПараметров.КоефициентОтОбщегоЗаказа=КоефициентОтОбщегоЗаказа; КоллекцияПараметров.ВесТысячиШтук=ВыбранВесТысячиШтук; КоллекцияПараметров.УстановленныйОбъем=УстановленныйОбъемТекЗаказчика; КоллекцияПараметров.ФормыПродаютсяОтдельно=ФормыПродаютсяОтдельноТекЗаказчика; КоллекцияПараметров.СебистоимостьФорм=СебистоимостьПечатныхФормТекЗаказчика; КоллекцияПараметров.ПродажнаяСтоимостьФорм=ПродажнаяСтоимостьФормТекЗаказчика; КоллекцияПараметров.ЦенаПоДокументам=ЦенаПоДокументамТекЗаказчика; КоллекцияПараметров.УстановленнаяЦенаБезФорм=УстановленнаяЦенаБезФормТекЗаказчика; КоллекцияПараметров.УстановленнаяЦена=УстановленнаяЦенаТекЗаказчика; КоллекцияПараметров.Рентабельность=РентабельностьТекЗаказчика; КоллекцияПараметров.Откат=ОткатТекЗаказчика; КоллекцияПараметров.ПремиальнаяЦенаБезФорм=ПремиальнаяЦенаБезФормТекЗаказчика; КоллекцияПараметров.ПремиальнаяЦена=ПремиальнаяЦенаТекЗаказчика; КоллекцияПараметров.Безнал=ВыбранБезнал; КоллекцияПараметров.Оплата1=ВыбранОплата1; КоллекцияПараметров.Оплата2=ВыбранОплата2; КоллекцияПараметров.Оплата3=ВыбранОплата3; КоллекцияПараметров.СрокОтсрочки=ВыбранСрокОтсрочки; КоллекцияПараметров.Спецификация=ВыбранСпецификация; глСделатьЗаписьВЗаказ(КоллекцияПараметров); КонецЦикла; Заказ=тбКонтрагенты.ПолучитьЗначение(ТекСтрокатбКонтрагенты,"ЗаказВакиля"); //ЗаписатьДокумент(); тбЗаказы.ВыбратьСтроки(); Пока тбЗаказы.ПолучитьСтроку() = 1 Цикл ИзменитьВДокументахПредварительныйЗаказНаЗаказВакиля(тбЗаказы.ПредварительныйЗаказ,тбЗаказы.ЗаказВакиля); КонецЦикла; Возврат 1; КонецФункции //------------------------------------------------------------------------------------------------------------ Процедура ПровестиДокумент() Если ЗаписатьДокумент()=0 Тогда СтатусВозврата(0); Возврат; КонецЕсли; Провести(); КонецПроцедуры Процедура ЗакрытьДокумент() Если СоздалиИЗаписалиНовыйЗаказ=1 Тогда СоздалиИЗаписалиНовыйЗаказ=0; ЗаписатьДокумент(); КонецЕсли; Форма.Закрыть(0); КонецПроцедуры //------------------------------------------------------------------------------------------------------------ Процедура НажатаКнопкаОК() Если ЗаписатьДокумент()=0 Тогда СтатусВозврата(0); Возврат; КонецЕсли; //ЗакрытьДокумент(); КонецПроцедуры //------------------------------------------------------------------------------------------------------------ Процедура ЗакрытьДокументБезЗаписи() ЗакрытьДокумент(); КонецПроцедуры //------------------------------------------------------------------------------------------------------------ Процедура ПриЗакрытии() Если СоздалиИЗаписалиНовыйЗаказ=1 Тогда СоздалиИЗаписалиНовыйЗаказ=0; Записать(); КонецЕсли; ОбъектП.ЗакрытьОкноСообщения(); КонецПроцедуры //------------------------------------------------------------------------------------------------------------ Процедура ИзмНаличиеМакета() Если НаличиеМакета=Перечисление.ДаНет.Да Тогда фНетМакета=0; процентCMYK=0; процентPantone=0; Иначе фНетМакета=1; КонецЕсли; Форма.процентCMYK.Доступность(фНетМакета); Форма.процентPantone.Доступность(фНетМакета); КонецПроцедуры //------------------------------------------------------------------------------------------------------------ Процедура ИзмОплата(КакаяОплата,Изменение) //Добавить - Изменение=1, Удалить - Изменение=2 Редактировать - Изменение=3 Добавить=1; Удалить=2;Редактировать=3; Если Форма.ТолькоПросмотр()=1 Тогда Возврат; КонецЕсли; Если Проведен()=1 Тогда Возврат; ИначеЕсли ЗакрытьДоступ=1 Тогда Предупреждение("Изменение запрещено !"); Возврат; КонецЕсли; Блокируем=Нет; ВыбранКонтрагент=тбКонтрагенты.ПолучитьЗначение(ТекСтрокатбКонтрагенты,"Контрагент"); ТекОплата1=ВыбранКонтрагент.Оплата1.Получить(ДатаДок); ТекОплата2=ВыбранКонтрагент.Оплата2.Получить(ДатаДок); ТекОплата3=ВыбранКонтрагент.Оплата3.Получить(ДатаДок); ТекСрокОтсрочки=ВыбранКонтрагент.Глубина.Получить(ДатаДок); Если (ТекОплата1+ТекОплата2+ТекОплата3)=100 Тогда Блокируем=Да; КонецЕсли; Сумма=Оплата1+Оплата2+тбОплаты.Итог("Процент"); Если Сумма>100 Тогда Если КакаяОплата=1 Тогда Оплата1=100-(Оплата2+тбОплаты.Итог("Процент")); ИначеЕсли КакаяОплата=2 Тогда Оплата2=100-(Оплата1+тбОплаты.Итог("Процент")); КонецЕсли; КонецЕсли; Если КакаяОплата=3 Тогда список=СоздатьОбъект("СписокЗначений"); Оплата3=100-(Оплата1+Оплата2+тбОплаты.Итог("Процент")); КоличествоСтрок=тбОплаты.КоличествоСтрок(); ТекСтр=тбОплаты.ТекущаяСтрока(); ТекКол=тбОплаты.ТекущаяКолонка(); Если ТекКол="Процент" Тогда Подсказка="Введите % оплаты" ИначеЕсли ТекКол="КвоДней" Тогда Подсказка="Введите к-во дней" КонецЕсли; Если Изменение = Удалить Тогда //если Удалить , то не препятствуем , но если КолСтрок = 0 , тогда возврат Если КоличествоСтрок=0 Тогда Возврат; КонецЕсли; Если Вопрос("Вы действительно хотите удалить строку?","Да+Нет",60)<>"Да" Тогда СтатусВозврата(0); Возврат; КонецЕсли; тбОплаты.УдалитьСтроку(ТекСтр); ИначеЕсли Изменение = Добавить Тогда Если Сумма>=100 Тогда Возврат; КонецЕсли; Если (Блокируем=Да)и(ТекОплата3=0) Тогда Предупреждение("По этому заказчику разрешение на ввод |отсрочки только через Руководителя"); Возврат; КонецЕсли; Процент=Оплата3; Оплата3=Оплата3-Процент; КвоДней=ТекСрокОтсрочки; список.ДобавитьЗначение(Процент,"Процент"); список.ДобавитьЗначение(КвоДней,"КвоДней"); список.ДобавитьЗначение(Оплата3,"Оплата3"); Сохранить=0; список.ДобавитьЗначение(Сохранить,"Сохранить"); ОткрытьФормуМодально("Обработка.ПроцентыИДни",список); Процент=список.Получить("Процент"); КвоДней=список.Получить("КвоДней"); Сохранить=список.Получить("Сохранить"); Если (Сохранить=1) Тогда Если (Блокируем=Да)и(КвоДней>ТекСрокОтсрочки) Тогда Предупреждение("По этому заказчику разрешен |максимальный срок отсрочки "+ТекСрокОтсрочки+" дней. |Увиличение срока отсрочки только через Руководителя"); Возврат; КонецЕсли; НомСтр=""; Если тбОплаты.НайтиЗначение(КвоДней,НомСтр,"КвоДней")=1 Тогда Предупреждение("Есть оплата с такой отсрочкой"); СтатусВозврата(0); Возврат; КонецЕсли; тбОплаты.НоваяСтрока(); тбОплаты.Процент=Процент; тбОплаты.КвоДней=КвоДней; РасчетСделан=0; КонецЕсли; ИначеЕсли Изменение = Редактировать Тогда Если КоличествоСтрок=0 Тогда Предупреждение("Добавте строку!"); Возврат; КонецЕсли; тбОплаты.ПолучитьСтрокуПоНомеру(ТекСтр); Процент=тбОплаты.Процент; КвоДней=тбОплаты.КвоДней; Оплата3=Оплата3-Процент; список.ДобавитьЗначение(Процент,"Процент"); список.ДобавитьЗначение(КвоДней,"КвоДней"); список.ДобавитьЗначение(Оплата3,"Оплата3"); Сохранить=0; список.ДобавитьЗначение(Сохранить,"Сохранить"); ОткрытьФормуМодально("Обработка.ПроцентыИДни",список); Процент=список.Получить("Процент"); КвоДней=список.Получить("КвоДней"); Сохранить=список.Получить("Сохранить"); Если (Сохранить=1) Тогда Если (Блокируем=Да)и(КвоДней>ТекСрокОтсрочки) Тогда Предупреждение("По этому заказчику разрешен |максимальный срок отсрочки "+ТекСрокОтсрочки+" дней. |Увиличение срока отсрочки только через Руководителя"); Возврат; Возврат; КонецЕсли; тбОплаты.Процент=Процент; тбОплаты.КвоДней=КвоДней; РасчетСделан=0; КонецЕсли; КонецЕсли; тбОплаты.Сортировать("КвоДней"); КонецЕсли; КонтекстФормы=глВернутьКонтекст(Контекст); РасчетСтоимости.УстановитьДокумент(КонтекстФормы,НормыРасчета); КонецПроцедуры //------------------------------------------------------------------------------------------------------------ Процедура ВыборВалюты() // Процедура по кнопке редактирования валюты в документе ОткрытьФормуМодально("Обработка.ИнформацияОВалютеУпрощенно", Контекст); КонецПроцедуры //------------------------------------------------------------------------------------------------------------ Процедура ИзмДатаДляЭкономистов(ВыбранДата); ДатаДляЭкономистов=ВыбранДата; Курс=Валюта.Курс.Получить(ДатаДляЭкономистов); РасчетСделан=0; КонтекстФормы=глВернутьКонтекст(Контекст); Если ОбщаяРасчетнаяТаблица.КоличествоСтрок()>0 Тогда МассаДляПереклейки=ОбщаяРасчетнаяТаблица.ПолучитьЗначение(1,"Масса"); ТиражДляПереклейки=ОбщаяРасчетнаяТаблица.ПолучитьЗначение(1,"Тираж"); Иначе МассаДляПереклейки=0; ТиражДляПереклейки=0; КонецЕсли; НормыРасчета.МассаДляПереклейки=МассаДляПереклейки; НормыРасчета.ТиражДляПереклейки=ТиражДляПереклейки; НормыРасчета.УстановитьДокумент(КонтекстФормы); НормыРасчета.РасчитатьВесТысячи(); РасчетСтоимости.УстановитьДокумент(КонтекстФормы,НормыРасчета); КонецПроцедуры //------------------------------------------------------------------------------------------------------------ Процедура ИзмФормаОплаты(КакаяОплата) Безналичная =1; Наличная = 2; Если КакаяОплата=Безналичная Тогда Если Безнал>100 Тогда Безнал=100; КонецЕсли; Нал=100-Безнал; Атр="БезНал"; Зн=""+Безнал; ИначеЕсли КакаяОплата=Наличная Тогда Если Нал>100 Тогда Нал=100; КонецЕсли; Безнал=100-Нал; Атр="Нал"; Зн=""+Нал; КонецЕсли; ВспомогПроцедура(тбИсторияДокумента,"Изменения",глПользователь,Атр, "Изменена форма оплаты на "+Атр+" = "+Зн); КонецПроцедуры //------------------------------------------------------------------------------------------------------------ Процедура СоздатьТаблицыДляСтраницыЭкономистов(КакиеСоздатьТаблицы="Общая,Процессы,НакладныеЗатраты,ЗатратыКрасок,БракИЗатраты,Стоимость,СтоимостьБезКлише") Если Найти(КакиеСоздатьТаблицы,"Общая")<>0 Тогда тбОбщая.УдалитьСтроки(); КонецЕсли; Если Найти(КакиеСоздатьТаблицы,"Процессы")<>0 Тогда тбПроцессы.Очистить(); тбПроцессы.НоваяКолонка("Процесс","Строка",,,"Процесс",10); тбПроцессы.НоваяКолонка("Норма","Число",18,5,"Норма расхода",5); тбПроцессы.НоваяКолонка("Цена","Число",18,5,"Цена, грн",5); тбПроцессы.НоваяКолонка("Сумма","Число",18,4,"Сумма, грн",5); тбПроцессы.НоваяКолонка("ВложеннаяТаблица"); КонецЕсли; Если Найти(КакиеСоздатьТаблицы,"НакладныеЗатраты")<>0 Тогда тбНакладныеЗатраты.Очистить(); тбНакладныеЗатраты.НоваяКолонка("Затрата","Строка",,,"Затрата",10); тбНакладныеЗатраты.НоваяКолонка("Норма","Число",18,5,"Норма расхода",5); тбНакладныеЗатраты.НоваяКолонка("Цена","Число",18,5,"Цена, грн",5); тбНакладныеЗатраты.НоваяКолонка("Сумма","Число",18,4,"Сумма, грн",5); КонецЕсли; Если Найти(КакиеСоздатьТаблицы,"БракИЗатраты")<>0 Тогда тбБракИЗатраты.Очистить(); тбБракИЗатраты.НоваяКолонка("Затраты","Строка",,,"Затраты",10); тбБракИЗатраты.НоваяКолонка("Вес","Число",18,5,"Вес, кг",7); КонецЕсли; Если Найти(КакиеСоздатьТаблицы,"ЗатратыКрасок")<>0 Тогда тбЗатратыКрасок.Очистить(); тбЗатратыКрасок.НоваяКолонка("Краска","Строка",,,"Краска",10); тбЗатратыКрасок.НоваяКолонка("ПроцентЗапечатки","Число",18,2,"% запечатки",8); тбЗатратыКрасок.НоваяКолонка("Норма","Число",18,5,"Нормы затрат",8); тбЗатратыКрасок.НоваяКолонка("Затраты","Число",18,5,"Затраты, кг",8); тбЗатратыКрасок.НоваяКолонка("НормаАнилокса","Число",18,5,"Норма анилокса",8); тбЗатратыКрасок.НоваяКолонка("Цена","Число",18,5,"Цена, грн",8); тбЗатратыКрасок.НоваяКолонка("Стоимость","Число",18,5,"Стоимость, грн",8); тбЗатратыКрасок.НоваяКолонка("СухиеЗатраты","Число",18,5,"Сухие затраты, кг",8); КонецЕсли; Если Найти(КакиеСоздатьТаблицы,"Стоимость")<>0 Тогда тбСтоимость.Очистить(); тбСтоимость.НоваяКолонка("Наименование","Строка",,,"Наименование",10); тбСтоимость.НоваяКолонка("Накрутка","Число",18,5,"Накрутка",5); тбСтоимость.НоваяКолонка("ДопНакрутка","Число",18,5,"ДопНакрутка",5); тбСтоимость.НоваяКолонка("Цена","Число",18,5,"Цена за 1кг.",5); тбСтоимость.НоваяКолонка("Сумма","Число",18,4,"Сумма",5); КонецЕсли; Если Найти(КакиеСоздатьТаблицы,"СтоимостьБезКлише")<>0 Тогда тбСтоимостьБезКлише.Очистить(); тбСтоимостьБезКлише.НоваяКолонка("Наименование","Строка",,,"Наименование",10); тбСтоимостьБезКлише.НоваяКолонка("Накрутка","Число",18,5,"Накрутка.",5); тбСтоимостьБезКлише.НоваяКолонка("ДопНакрутка","Число",18,5,"ДопНакрутка",5); тбСтоимостьБезКлише.НоваяКолонка("Цена","Число",18,5,"Цена за 1кг.",5); тбСтоимостьБезКлише.НоваяКолонка("Сумма","Число",18,4,"Сумма",5); КонецЕсли; КонецПроцедуры //------------------------------------------------------------------------------------------------------------ Процедура ЗаполнитьТаблицыДляТехКарты(ИТЗНормыРасхода,ИТКраски) Если ОбщийПродажныйОбъем=0 Тогда Возврат; КонецЕсли; кг=0; тыс_шт=1; Обьем=0;Тираж=0; Если КакСчитаем=СчитаемОтМассы Тогда Обьем=ОбщийПродажныйОбъем; ИначеЕсли КакСчитаем=СчитаемОтТиража Тогда Тираж= ОбщийПродажныйОбъем; Иначе Возврат; КонецЕсли; КонтекстФормы=глВернутьКонтекст(Контекст); Если ОбщаяРасчетнаяТаблица.КоличествоСтрок()>0 Тогда МассаДляПереклейки=ОбщаяРасчетнаяТаблица.ПолучитьЗначение(1,"Масса"); ТиражДляПереклейки=ОбщаяРасчетнаяТаблица.ПолучитьЗначение(1,"Тираж"); Иначе МассаДляПереклейки=0; ТиражДляПереклейки=0; КонецЕсли; НормыРасчета.МассаДляПереклейки=МассаДляПереклейки; НормыРасчета.ТиражДляПереклейки=ТиражДляПереклейки; НормыРасчета.УстановитьДокумент(КонтекстФормы); НормыРасчета.КакСчитаем=КакСчитаем; НормыРасчета.РасчитатьВесТысячи(); НормыРасчета.МассаПриладки=Обьем; НормыРасчета.ТиражПриладки=Тираж; НормыРасчета.ВыполнитьРасчетНорм(); Обьем=НормыРасчета.МассаПриладки; Тираж=НормыРасчета.ТиражПриладки; РасчетныйОбъем=Обьем; ОбщаяНормаПечатнойФормы=НормыРасчета.РасходПечатныхФорм(); КвоПМТиража=НормыРасчета.КолПогонМетровТиражаПриладки; НормаДемпфера=НормыРасчета.РасходДемпфера(); ОбщийРасходКрасокВкг=НормыРасчета.РасходКрасок(); ИТЗНормыРасхода.НоваяСтрока(); ИТЗНормыРасхода.Идентификатор="КвоПМТиража"; ИТЗНормыРасхода.Значение=КвоПМТиража; Если ОбщаяНормаПечатнойФормы<>0 Тогда ИТЗНормыРасхода.НоваяСтрока(); ИТЗНормыРасхода.Идентификатор="РасходПечатнойФормы"; ИТЗНормыРасхода.Значение=ОбщаяНормаПечатнойФормы; КонецЕсли; Если НормаДемпфера<>0 Тогда ИТЗНормыРасхода.НоваяСтрока(); ИТЗНормыРасхода.Идентификатор="РасходДемпфера"; ИТЗНормыРасхода.Значение=НормаДемпфера; КонецЕсли; ОбщаяТаблицаКрасок=НормыРасчета.ОбщаяТаблицаКрасок; //ЗатратыКрасок Если ОбщийРасходКрасокВкг<>0 Тогда ОбщаяТаблицаКрасок.ВыбратьСтроки(); Пока ОбщаяТаблицаКрасок.ПолучитьСтроку()=1 Цикл ЗатратыОднойКраскиВкг =0; Если (ПустоеЗначение(ОбщаяТаблицаКрасок.Краска)=1)ИЛИ(ОбщаяТаблицаКрасок.ПроцентЗапечатки<=0) Тогда Продолжить; КонецЕсли; ИТКраски.НоваяСтрока(); ИТКраски.Краска=ОбщаяТаблицаКрасок.Краска; ИТКраски.Анилокс=ОбщаяТаблицаКрасок.Анилокс; ИТКраски.ПроцентЗапечатки=ОбщаяТаблицаКрасок.ПроцентЗапечатки; ИТКраски.РасходНорма=ЗатратыОднойКраскиВкг; КонецЦикла; КонецЕсли; РасходРастворителяДляКрасокВкг=НормыРасчета.РасходРастворителяДляКрасок(); РасходРастворителяДляСмывкиСекций=НормыРасчета.РасходРастворителяДляСмывкиСекций(); ПриладкаПечатиВкг=НормыРасчета.ПриладкаПечати(); ТехОтходыПечатиВкг=НормыРасчета.ТехОтходыПечати(); ТехОтходыОбратнойПечатиВкг=НормыРасчета.ТехОтходыОбратнойПечати(); КромкаМатериалаПечатиВкг=НормыРасчета.КромкаОсновногоМатериала(); КромкаМатериалаДляЛаминации1Вкг=НормыРасчета.КромкаМатериалаДляЛаминации1(); КромкаМатериалаДляЛаминации2Вкг=НормыРасчета.КромкаМатериалаДляЛаминации2(); Если (РасходРастворителяДляКрасокВкг<>0)Тогда ИТЗНормыРасхода.НоваяСтрока(); ИТЗНормыРасхода.Идентификатор="РасходРастворителяДляКрасок"; ИТЗНормыРасхода.Значение=РасходРастворителяДляКрасокВкг; КонецЕсли; Если (РасходРастворителяДляСмывкиСекций<>0) Тогда ИТЗНормыРасхода.НоваяСтрока(); ИТЗНормыРасхода.Идентификатор="РасходРастворителяДляСмывкиСекций"; ИТЗНормыРасхода.Значение=РасходРастворителяДляСмывкиСекций; КонецЕсли; ИТЗНормыРасхода.НоваяСтрока(); ИТЗНормыРасхода.Идентификатор="РасходСвязующего"; ИТЗНормыРасхода.Значение=НормыРасчета.РасходСвязующего(); ИТЗНормыРасхода.НоваяСтрока(); ИТЗНормыРасхода.Идентификатор="РасходЗамедлителя"; ИТЗНормыРасхода.Значение=НормыРасчета.РасходЗамедлителя(); ИТЗНормыРасхода.НоваяСтрока(); ИТЗНормыРасхода.Идентификатор="РасходАдгезийнойДобавки"; ИТЗНормыРасхода.Значение=НормыРасчета.РасходАдгезийнойДобавки(); ИТЗНормыРасхода.НоваяСтрока(); ИТЗНормыРасхода.Идентификатор="РасходУскорителя"; ИТЗНормыРасхода.Значение=НормыРасчета.РасходУскорителя();; ИТЗНормыРасхода.НоваяСтрока(); ИТЗНормыРасхода.Идентификатор="РасходКлеяДляЛаминации1"; ИТЗНормыРасхода.Значение=НормыРасчета.РасходКлея();; Если ПриладкаПечатиВкг<>0 Тогда ИТЗНормыРасхода.НоваяСтрока(); ИТЗНормыРасхода.Идентификатор="ПриладкаПечати"; ИТЗНормыРасхода.Значение=ПриладкаПечатиВкг; КонецЕсли; Если ТехОтходыПечатиВкг<>0 Тогда ИТЗНормыРасхода.НоваяСтрока(); ИТЗНормыРасхода.Идентификатор="ТехОтходыПечати"; ИТЗНормыРасхода.Значение=ТехОтходыПечатиВкг; КонецЕсли; Если ТехОтходыОбратнойПечатиВкг<>0 Тогда ИТЗНормыРасхода.НоваяСтрока(); ИТЗНормыРасхода.Идентификатор="ТехОтходыОбратнойПечати"; ИТЗНормыРасхода.Значение=ТехОтходыПечатиВкг; КонецЕсли; //Если ПриладкаЭкструдераВкг<>0 Тогда //КонецЕсли; // //Если ТехОтходыЭкструзииВкг<>0 Тогда //КонецЕсли; //Если ТехОтходыПриРезкеЛаминатаДляОсновногоМатериалаВкг<>0 Тогда // ИТЗНормыРасхода.НоваяСтрока(); // ИТЗНормыРасхода.Идентификатор="ТехОтходыПриРезкеЛаминатаДляОсновногоМатериала"; // ИТЗНормыРасхода.Значение=ТехОтходыПриРезкеЛаминатаДляОсновногоМатериалаВкг; //КонецЕсли; //Если ТехОтходыПриРезкеЛаминатаДляМатериалаЛаминации1Вкг<>0 Тогда // ИТЗНормыРасхода.НоваяСтрока(); // ИТЗНормыРасхода.Идентификатор="ТехОтходыПриРезкеЛаминатаДляМатериалаЛаминации1"; // ИТЗНормыРасхода.Значение=ТехОтходыПриРезкеЛаминатаДляМатериалаЛаминации1Вкг; //КонецЕсли; //Если ТехОтходыПриРезкеЛаминатаДляМатериалаЛаминации2Вкг<>0 Тогда // ИТЗНормыРасхода.НоваяСтрока(); // ИТЗНормыРасхода.Идентификатор="ТехОтходыПриРезкеЛаминатаДляМатериалаЛаминации2"; // ИТЗНормыРасхода.Значение=ТехОтходыПриРезкеЛаминатаДляМатериалаЛаминации2Вкг; //КонецЕсли; // // //Если ТехОтходыПриЛаминацииОсновногоМатериалаВкг<>0 Тогда // ИТЗНормыРасхода.НоваяСтрока(); // ИТЗНормыРасхода.Идентификатор="ТехОтходыПриЛаминацииОсновногоМатериала"; // ИТЗНормыРасхода.Значение=ТехОтходыПриЛаминацииОсновногоМатериалаВкг; //КонецЕсли; // //Если ТехОтходыЛаминацииМатериалаЛаминации1Вкг<>0 Тогда // ИТЗНормыРасхода.НоваяСтрока(); // ИТЗНормыРасхода.Идентификатор="ТехОтходыЛаминацииМатериалаЛаминации1"; // ИТЗНормыРасхода.Значение=ТехОтходыЛаминацииМатериалаЛаминации1Вкг; //КонецЕсли; // //Если ТехОтходыЛаминацииМатериалаЛаминации2Вкг<>0 Тогда // ИТЗНормыРасхода.НоваяСтрока(); // ИТЗНормыРасхода.Идентификатор="ТехОтходыЛаминацииМатериалаЛаминации2"; // ИТЗНормыРасхода.Значение=ТехОтходыЛаминацииМатериалаЛаминации2Вкг; //КонецЕсли; // //Если ПриладкаПриРезкеВкг<>0 Тогда // ИТЗНормыРасхода.НоваяСтрока(); // ИТЗНормыРасхода.Идентификатор="ПриладкаПриРезке"; // ИТЗНормыРасхода.Значение=ПриладкаПриРезкеВкг; //КонецЕсли; // //Если ТехОтходыПриРезкеВкг<>0 Тогда // ИТЗНормыРасхода.НоваяСтрока(); // ИТЗНормыРасхода.Идентификатор="ТехОтходыПриРезке"; // ИТЗНормыРасхода.Значение=ТехОтходыПриРезкеВкг; //КонецЕсли; // //Если ПриладкаПриРазбивкеВкг<>0 Тогда //КонецЕсли; // //Если ТехОтходыПриРазбивкеОсновногоМатериалаВкг<>0 Тогда //КонецЕсли; //Если ТехОтходыПриРазбивкеМатериалаЛаминации1Вкг<>0 Тогда //КонецЕсли; //Если ТехОтходыПриРазбивкеМатериалаЛаминации2Вкг<>0 Тогда //КонецЕсли; // //Если ВырубкаВкг<>0 Тогда // Наименование="Тех.отходы при Вырубке в кг"; //КонецЕсли; // Если КромкаМатериалаПечатиВкг<>0 Тогда ИТЗНормыРасхода.НоваяСтрока(); ИТЗНормыРасхода.Идентификатор="КромкаОсновногоМатериала"; ИТЗНормыРасхода.Значение=КромкаМатериалаПечатиВкг; КонецЕсли; //Если КоличествоПереклеек<>0 Тогда // КвоПереклеек=КоличествоПереклеек; //КонецЕсли; ИТЗНормыРасхода.НоваяСтрока(); ИТЗНормыРасхода.Идентификатор="РасходКлеяДляЛаминации2"; ИТЗНормыРасхода.Значение=0; ИТЗНормыРасхода.НоваяСтрока(); ИТЗНормыРасхода.Идентификатор="РасходСмывкиКлея"; ИТЗНормыРасхода.Значение=0; КонецПроцедуры //-------------------------------------------------------------------------------------------------------------------------------------------------------------------- //Процедура ЗаполнитьТаблицыДляТехКарты(ИТЗНормыРасхода,ИТКраски) // // //Если ОбщийПродажныйОбъем=0 Тогда // // Возврат; // //КонецЕсли; // // // // // //Если КакСчитаем=СчитаемОтМассы Тогда // // Обьем=ОбщийПродажныйОбъем; // // КолШтук=КолШтук(Обьем); // // Тираж=Окр(КолШтук/1000,4,1); // //ИначеЕсли КакСчитаем=СчитаемОтТиража Тогда // // Тираж= ОбщийПродажныйОбъем; // // Обьем=ИзТысШтукВкг(Тираж); // //Иначе // // Возврат; // //КонецЕсли; // // // // // // // //РасчетныйОбъем=Обьем; // // // //СписокДанных=СоздатьОбъект("СписокЗначений"); // //СписокДанных.ДобавитьЗначение(0,"РасчетныйОбъем"); // //СписокДанных.ДобавитьЗначение(0,"ОбщаяГраматура"); // //СписокДанных.ДобавитьЗначение(0,"ОбщаяШиринаВсехДизайновВОдномШагеПечати"); // //СписокДанных.ДобавитьЗначение(0,"КоэфициентДизайнаВЗаказе"); // //СписокДанных.ДобавитьЗначение(0,"ЕстьЭкструзия"); // //СписокДанных.ДобавитьЗначение(0,"ЕстьПечать"); // //СписокДанных.ДобавитьЗначение(0,"ЕстьЛаминация"); // //СписокДанных.ДобавитьЗначение(0,"ЕстьРезка"); // //СписокДанных.ДобавитьЗначение(0,"ЕстьРазбивка"); // //СписокДанных.ДобавитьЗначение(0,"НормаТехОтходовОснМатериала"); // //СписокДанных.ДобавитьЗначение(0,"Материал"); // //СписокДанных.ДобавитьЗначение(0,"КакойМатериал"); // //СписокДанных.ДобавитьЗначение(0,"ТолщинаМатериала"); // //СписокДанных.ДобавитьЗначение(0,"КоефНашегоМатериала"); // //СписокДанных.ДобавитьЗначение(0,"ДавальческийВесМатериала"); // //СписокДанных.ДобавитьЗначение(0,"ФорматМатериала"); // //СписокДанных.ДобавитьЗначение(0,"РасходМатериалаВкг"); // //СписокДанных.ДобавитьЗначение(0,"ОбщийРасходКрасокВкг"); // //СписокДанных.ДобавитьЗначение(0,"Кол_квМТиража"); // //СписокДанных.ДобавитьЗначение(0,"КолПогонМетровТиража"); // //СписокДанных.ДобавитьЗначение(0,"ШиринаРезиновогоВала"); // //СписокДанных.ДобавитьЗначение(0,"ГраматураМатериала1"); // //СписокДанных.ДобавитьЗначение(0,"ГраматураМатериала2"); // //СписокДанных.ДобавитьЗначение(0,"ГраматураМатериала3"); // //СписокДанных.ДобавитьЗначение(0,"РасходОсновногоМатериалаВквМ"); // //СписокДанных.ДобавитьЗначение(0,"Развертка"); // //СписокДанных.ДобавитьЗначение(0,"тбКраски"); // //СписокДанных.ДобавитьЗначение(0,"НомСтроки"); // //СписокДанных.ДобавитьЗначение(0,"КоличествоВалов"); // //СписокДанных.ДобавитьЗначение(0,"КоличествоПереклеек"); // //СписокДанных.ДобавитьЗначение(0,"ПлощадьДляКлеяПодРезиновыйВалВквМ"); // // // // // //СписокДанных.Установить("ЕстьЭкструзия",фЭкструзия); // //СписокДанных.Установить("ЕстьПечать",фПечать); // //СписокДанных.Установить("ЕстьЛаминация",фЛаминация); // //СписокДанных.Установить("ЕстьРезка",фБабинорезка); // //СписокДанных.Установить("ЕстьРазбивка",фПакетоделание); // //СписокДанных.Установить("ГрамматураМатериала1",ГрамматураМатериала(ОсновнойМатериал,ТолщинаОсновногоМатериала)); // //СписокДанных.Установить("ГрамматураМатериала2",ГрамматураМатериала(МатериалЛаминации1,ТолщинаМатериалаЛаминации1)); // //СписокДанных.Установить("ГрамматураМатериала3",ГрамматураМатериала(МатериалЛаминации2,ТолщинаМатериалаЛаминации2)); // //СписокДанных.Установить("НомСтроки",1); // //СписокДанных.Установить("ОбщаяГрамматура",ОбщаяГрамматураПродукции); // //СписокДанных.Установить("ШиринаРезиновогоВала",ШиринаРезиновогоВала); // //СписокДанных.Установить("КоличествоПереклеек",КоличествоПереклеек); // //НормаТехОтходовОснМатериала=НормаТехОтходовМатериала(ОсновнойМатериал); // //СписокДанных.Установить("НормаТехОтходовОснМатериала",НормаТехОтходовОснМатериала); // // // //ОбщаяШиринаВсехДизайновВОдномШагеПечати=ОбщаяШиринаВсехДизайновВОдномШагеПечати() ; // //СписокДанных.Установить("РасчетныйОбъем",РасчетныйОбъем); // //СписокДанных.Установить("ОбщаяШиринаВсехДизайновВОдномШагеПечати", ОбщаяШиринаВсехДизайновВОдномШагеПечати); // //Кол_квМТиража(СписокДанных); // //КвоПогонМетровТиража=КолПогонМетровТиража(СписокДанных); // // // // // //РасходОсновногоМатериала=0; // //РасходМатериалаЛаминации1=0; // //РасходМатериалаЛаминации2=0; // // // //РасходОсновногоМатериалаВквМ=0; // //ОбщийРасходКрасокВкг=0; // // // //РасходРастворителяДляКрасокВкг=0; // //РасходСвязующегоВкг=0; // //РасходЗамедлителяВкг=0; // //РасходУскорителяВкг=0; // //РасходДобавкиВкг=0; // // // //РасходКлеяДляЛаминации1=0; // //РасходКлеяДляЛаминации2=0; // //РасходСмывкиКлеяВкг=0; // ////РасходКлеяВкг=0; // // // //НормаПечатнойФормы=0; // //НормаДемпфера=0; // //РасходРастворителяДляСмывкиСекций=0; // // // //ПриладкаПечатиВкг=0; // //ТехОтходыПечатиВкг=0; // //ТехОтходыОбратнойПечатиВкг=0; // // // //ПриладкаЭкструдераВкг=0; // //ТехОтходыЭкструзииВкг=0; // // // // // //ТехОтходыПриРезкеЛаминатаДляОсновногоМатериалаВкг=0; // //ТехОтходыПриРезкеЛаминатаДляМатериалаЛаминации1Вкг=0; // //ТехОтходыПриРезкеЛаминатаДляМатериалаЛаминации2Вкг=0; // // // // // //ТехОтходыПриЛаминацииОсновногоМатериалаВкг =0; // //ТехОтходыЛаминацииМатериалаЛаминации1Вкг=0; // //ТехОтходыЛаминацииМатериалаЛаминации2Вкг=0; // // // // // //ПриладкаПриРезкеВкг=0; // //ТехОтходыПриРезкеВкг=0; // //ПриладкаПриРазбивкеВкг=0; // //ТехОтходыПриРазбивкеОсновногоМатериалаВкг=0; // //ТехОтходыПриРазбивкеМатериалаЛаминации1Вкг=0; // //ТехОтходыПриРазбивкеМатериалаЛаминации2Вкг=0; // //ВырубкаВкг=0; // // // //СуммарныйВесВсехДизайновБезДна=0; // //ВесДнаВсехДизайнов=0; // // // //ОбщаяНормаПечатнойФормы=0; // // // //СумарныйВесПо1ТысячиВсехДорожек=СумарныйВесПо1ТысячиВсехДорожек(); // // // ////!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! // ////расчитать вес и тираж каждого дизайна исходя из общей массы или тиража // ////ОбщаяПлощадьВсехДизайнов=0; // // // // // // // //СписокДанных.Установить("ОбщаяШиринаВсехДизайновВОдномШагеПечати",ОбщаяШиринаВсехДизайновВОдномШагеПечати); // // // //ВыбратьСтроки(); // //Пока ПолучитьСтроку() = 1 Цикл // // // // Если ИТСтрокиДокумента.НомерИндекса("инНомерСтрокиДокумента")=0 Тогда // // ИТСтрокиДокумента.ДобавитьИндекс("инНомерСтрокиДокумента","НомерСтрокиДокумента"); // // КонецЕсли; // // НомСтроки=ИТСтрокиДокумента.НайтиСтроку("инНомерСтрокиДокумента", НомерСтроки); // // Если НомСтроки<>0 Тогда // // ТаблицаКрасок=ИТСтрокиДокумента.ПолучитьЗначение(НомСтроки,"ТаблицаКрасок"); // // Иначе // // Сообщить("Ошибка в ЗаполнитьТаблицыДляТехКарты"); // // ОбъектП.ЗакрытьОкноСообщения(); // // Возврат ; // // КонецЕсли; // // Вес1Тысячи=Вес1ТысячиОдногоДизайна(ТипПакета,ОбщаяГрамматураПродукции,ШагПечати,ШиринаДорожки, // // ВысотаДизайна,ШиринаДизайна,БоковаяЗакладка,НижняяЗакладка,ВерхняяЗакладка,ВесРучки,ДлинаДна,ДлинаРучки,ШиринаРучки); // // Вес1ТысячиОдногоДизайна= Вес1Тысячи; // // // // КоефициентПовторенийДизайнаВЗаказе=КоефициентПовторенийДизайнаВЗаказе(НомерСтроки,Дизайн); // // КоэфициентДизайнаВЗаказе=Вес1ТысячиОдногоДизайна*КоефициентПовторенийДизайнаВЗаказе/СумарныйВесПо1ТысячиВсехДорожек; // // // // // // МассаОдногоДизайна=Обьем*КоэфициентДизайнаВЗаказе; // // ТиражОдногоДизайна=МассаОдногоДизайна/Вес1ТысячиОдногоДизайна; // // Вес1ТысячиДнаОдногоДизайна=Вес1ТысячиДнаОдногоДизайна(); // // ВесДнаВТиражеОдногоДизайна = Вес1ТысячиДнаОдногоДизайна*ТиражОдногоДизайна; // // ВесОдногоДизайнаБезДна= МассаОдногоДизайна- ВесДнаВТиражеОдногоДизайна; // // ОбщаяШиринаОдногоДизайнаВЗаказе=ОбщаяШиринаВсехДизайновВОдномШагеПечати*КоэфициентДизайнаВЗаказе; // // // // СписокДанных.Установить("РасчетныйОбъем",ВесОдногоДизайнаБезДна); // // СписокДанных.Установить("ОбщаяШиринаВсехДизайновВОдномШагеПечати",ОбщаяШиринаВсехДизайновВОдномШагеПечати); // // СписокДанных.Установить("КоэфициентДизайнаВЗаказе",КоэфициентДизайнаВЗаказе); // // // // СписокДанных.Установить("Материал",ОсновнойМатериал); // // СписокДанных.Установить("КакойМатериал","ОсновнойМатериал"); // // СписокДанных.Установить("ТолщинаМатериала",ТолщинаОсновногоМатериала); // // СписокДанных.Установить("КоефНашегоМатериала",КоефНашегоОснМатериала); // // СписокДанных.Установить("ДавальческийВесМатериала",ДавальческийВесОснМатериала); // // // // СписокДанных.Установить("ФорматМатериала",ОбщаяШиринаОдногоДизайнаВЗаказе); // // // // // // Кол_квМТиража(СписокДанных); // // СписокДанных.Установить("Развертка",РазверткаДизайна); // // СписокДанных.Установить("НомерСтрокиВТаблицеДизайнов",НомерСтроки); // // // // СписокДанных.Установить("тбКраски",ТаблицаКрасок); // // НормаПечатнойФормы=НормаДляПечатныхФормТекущегоДизайна(СписокДанных); // // // // ОбщаяНормаПечатнойФормы=ОбщаяНормаПечатнойФормы+НормаПечатнойФормы; // // // // КоличествоВалов=УстановитьКолВалов(списокДанных); // // СписокДанных.Установить("КоличествоВалов",КоличествоВалов); // // // // // // РасходОсновногоМатериалаОдногоДизайнаВквМ=РасходОсновногоМатериалаВквМ(СписокДанных); // // // // ПриладкаЭкструдераДляОсновногоМатериалаОдногоДизайнаВкг = ПриладкаЭкструдераВкг("ОсновнойМатериал"); // // ТехОтходыЭкструзииДляОсновногоМатериалаОдногоДизайнаВкг = ТехОтходыЭкструзииВкг("ОсновнойМатериал",СписокДанных); // // ПриладкаПечатиОдногоДизайнаВкг = ПриладкаПечатиВкг(СписокДанных); // // ТехОтходыПечатиОдногоДизайнаВкг = ТехОтходыПечатиВкг(СписокДанных); // // ТехОтходыОбратнойПечатиОдногоДизайнаВкг = ТехОтходыОбратнойПечатиВкг(списокДанных); // // ТехОтходыПриРезкеЛаминатаДляОсновногоМатериалаОдногоДизайнаВкг = ТехОтходыПриРезкеЛаминатаДляОсновногоМатериалаВкг(СписокДанных); // // ТехОтходыПриЛаминацииОдногоДизайнаВкг = ТехОтходыПриЛаминацииВкг(СписокДанных); // // ПриладкаПриРезкеОдногоДизайнаВкг = ПриладкаПриРезкеВкг(); // // ТехОтходыПриРезкеОдногоДизайнаВкг= ТехОтходыПриРезкеВкг(СписокДанных); // // ПриладкаПриРазбивкеОдногоДизайнаВкг = ПриладкаПриРазбивкеВкг(); // // ТехОтходыПриРазбивкеОсновногоМатериалаОдногоДизайнаВкг = ТехОтходыПриРазбивкеОсновногоМатериалаВкг(СписокДанных); // // ВырубкаОдногоДизайнаВкг=ВырубкаВкг(ВесОдногоДизайнаБезДна); // // // // РасходОсновногоМатериалаОдногоДизайна=РасходОсновногоМатериалаВкг(списокДанных); // // // // СписокДанных.Установить("Материал",МатериалЛаминации1); // // СписокДанных.Установить("КакойМатериал","МатериалЛаминации1"); // // СписокДанных.Установить("ТолщинаМатериала",ТолщинаМатериалаЛаминации1); // // СписокДанных.Установить("КоефНашегоМатериала",КоефНашегоМатериалаЛаминации1); // // СписокДанных.Установить("ДавальческийВесМатериала",ДавальческийВесМатериалаЛаминации1); // // // // ПриладкаЭкструдераДляМатериалаЛаминации1ОдногоДизайнаВкг= ПриладкаЭкструдераВкг("МатериалЛаминации1"); // // ТехОтходыЭкструзииДляМатериалаЛаминации1ОдногоДизайнаВкг = ТехОтходыЭкструзииВкг("МатериалЛаминации1",СписокДанных); // // ТехОтходыПриРезкеЛаминатаДляМатериалаЛаминации1ОдногоДизайнаВкг=ТехОтходыПриРезкеЛаминатаДляМатериалаЛаминации1Вкг(СписокДанных); // // ТехОтходыЛаминацииМатериалаЛаминации1ОдногоДизайнаВкг=ТехОтходыЛаминацииМатериалаЛаминации1Вкг(СписокДанных); // // ТехОтходыПриРазбивкеМатериалаЛаминации1ОдногоДизайнаВкг=ТехОтходыПриРазбивкеМатериалаЛаминации1Вкг(СписокДанных); // // // // РасходМатериалаЛаминации1ОдногоДизайна=РасходМатериалаЛаминации1(СписокДанных); // // // // СписокДанных.Установить("Материал",МатериалЛаминации2); // // СписокДанных.Установить("КакойМатериал","МатериалЛаминации2"); // // СписокДанных.Установить("ТолщинаМатериала",ТолщинаМатериалаЛаминации2); // // СписокДанных.Установить("КоефНашегоМатериала",КоефНашегоМатериалаЛаминации2); // // СписокДанных.Установить("ДавальческийВесМатериала",ДавальческийВесМатериалаЛаминации2); // // // // ПриладкаЭкструдераДляМатериалаЛаминации2ОдногоДизайнаВкг= ПриладкаЭкструдераВкг("МатериалЛаминации2"); // // ТехОтходыЭкструзииДляМатериалаЛаминации2ОдногоДизайнаВкг = ТехОтходыЭкструзииВкг("МатериалЛаминации2",СписокДанных); // // ТехОтходыПриРезкеЛаминатаДляМатериалаЛаминации2ОдногоДизайнаВкг=ТехОтходыПриРезкеЛаминатаДляМатериалаЛаминации2Вкг(СписокДанных); // // ТехОтходыЛаминацииМатериалаЛаминации2ОдногоДизайнаВкг=ТехОтходыЛаминацииМатериалаЛаминации2Вкг(СписокДанных); // // ТехОтходыПриРазбивкеМатериалаЛаминации2ОдногоДизайнаВкг=ТехОтходыПриРазбивкеМатериалаЛаминации2Вкг(СписокДанных); // // // // РасходМатериалаЛаминации2ОдногоДизайна=РасходМатериалаЛаминации2(СписокДанных); // // // // СписокДанных.Установить("Материал",ОсновнойМатериал); // // СписокДанных.Установить("КакойМатериал","ОсновнойМатериал"); // // СписокДанных.Установить("ТолщинаМатериала",ТолщинаОсновногоМатериала); // // СписокДанных.Установить("КоефНашегоМатериала",КоефНашегоОснМатериала); // // СписокДанных.Установить("ДавальческийВесМатериала",ДавальческийВесОснМатериала); // // // // ОбщийРасходКрасокОдногоДизайнаВкг=ОбщийРасходКрасокВкг(списокДанных); // // СписокДанных.Установить("ОбщийРасходКрасокВкг",ОбщийРасходКрасокОдногоДизайнаВкг); // // // // // // РасходРастворителяДляКрасокОдногоДизайнаВкг=РасходРастворителяДляКрасок(СписокДанных); // // РасходСвязующегОдногоДизайнаВкг=РасходСвязующегоВкг(СписокДанных); // // РасходЗамедлителяОдногоДизайнаВкг=РасходЗамедлителяВкг(СписокДанных); // // РасходУскорителяОдногоДизайнаВкг=РасходУскорителяВкг (СписокДанных); // // РасходДобавкиОдногоДизайнаВкг=РасходДобавкиВкг(СписокДанных); // // // // КлейДляЛаминации1=РасходКлеяДляЛаминации1(СписокДанных); // // КлейДляЛаминации2=РасходКлеяДляЛаминации2(СписокДанных); // // СмывкаКлея =РасходСмывкиКлея(СписокДанных); // // // // // // // // // // НормаДемпфераОдногоДизайна=НормаДляДемпфера(СписокДанных); // // РасходРастворителяДляСмывкиСекцийОдногоДизайна=РасходРастворителяДляСмывкиСекций(СписокДанных); // // // // // // ПриладкаЭкструдераДляОдногоДизайнаВкг=ПриладкаЭкструдераДляОсновногоМатериалаОдногоДизайнаВкг // // +ПриладкаЭкструдераДляМатериалаЛаминации1ОдногоДизайнаВкг+ПриладкаЭкструдераДляМатериалаЛаминации2ОдногоДизайнаВкг; // // // // ТехОтходыЭкструзииДляОдногоДизайнаВкг = ТехОтходыЭкструзииДляОсновногоМатериалаОдногоДизайнаВкг // // +ТехОтходыЭкструзииДляМатериалаЛаминации1ОдногоДизайнаВкг+ТехОтходыЭкструзииДляМатериалаЛаминации2ОдногоДизайнаВкг; // // // // ПриладкаЭкструдераВкг=ПриладкаЭкструдераВкг+ПриладкаЭкструдераДляОдногоДизайнаВкг; // // ТехОтходыЭкструзииВкг=ТехОтходыЭкструзииВкг+ТехОтходыЭкструзииДляОдногоДизайнаВкг; // // // // ПриладкаПечатиВкг=ПриладкаПечатиВкг+ПриладкаПечатиОдногоДизайнаВкг; // // ТехОтходыПечатиВкг=ТехОтходыПечатиВкг+ТехОтходыПечатиОдногоДизайнаВкг; // // ТехОтходыОбратнойПечатиВкг = ТехОтходыОбратнойПечатиВкг+ТехОтходыОбратнойПечатиОдногоДизайнаВкг; // // // // // // ТехОтходыПриРезкеЛаминатаДляОсновногоМатериалаВкг = ТехОтходыПриРезкеЛаминатаДляОсновногоМатериалаВкг+ТехОтходыПриРезкеЛаминатаДляОсновногоМатериалаОдногоДизайнаВкг; // // ТехОтходыПриРезкеЛаминатаДляМатериалаЛаминации1Вкг=ТехОтходыПриРезкеЛаминатаДляМатериалаЛаминации1Вкг+ТехОтходыПриРезкеЛаминатаДляМатериалаЛаминации1ОдногоДизайнаВкг; // // ТехОтходыПриРезкеЛаминатаДляМатериалаЛаминации2Вкг=ТехОтходыПриРезкеЛаминатаДляМатериалаЛаминации2Вкг+ТехОтходыПриРезкеЛаминатаДляМатериалаЛаминации2ОдногоДизайнаВкг; // // // // // // ТехОтходыПриЛаминацииОсновногоМатериалаВкг = ТехОтходыПриЛаминацииОсновногоМатериалаВкг+ТехОтходыПриЛаминацииОдногоДизайнаВкг; // // ТехОтходыЛаминацииМатериалаЛаминации1Вкг=ТехОтходыЛаминацииМатериалаЛаминации1Вкг+ТехОтходыЛаминацииМатериалаЛаминации1ОдногоДизайнаВкг; // // ТехОтходыЛаминацииМатериалаЛаминации2Вкг=ТехОтходыЛаминацииМатериалаЛаминации2Вкг+ТехОтходыЛаминацииМатериалаЛаминации2ОдногоДизайнаВкг; // // // // ПриладкаПриРезкеВкг = ПриладкаПриРезкеВкг+ПриладкаПриРезкеОдногоДизайнаВкг; // // ТехОтходыПриРезкеВкг= ТехОтходыПриРезкеВкг+ТехОтходыПриРезкеОдногоДизайнаВкг; // // ПриладкаПриРазбивкеВкг = ПриладкаПриРазбивкеВкг+ПриладкаПриРазбивкеОдногоДизайнаВкг; // // ТехОтходыПриРазбивкеОсновногоМатериалаВкг = ТехОтходыПриРазбивкеОсновногоМатериалаВкг+ТехОтходыПриРазбивкеОсновногоМатериалаОдногоДизайнаВкг; // // ТехОтходыПриРазбивкеМатериалаЛаминации1Вкг=ТехОтходыПриРазбивкеМатериалаЛаминации1Вкг+ТехОтходыПриРазбивкеМатериалаЛаминации1ОдногоДизайнаВкг; // // ТехОтходыПриРазбивкеМатериалаЛаминации2Вкг=ТехОтходыПриРазбивкеМатериалаЛаминации2Вкг+ТехОтходыПриРазбивкеМатериалаЛаминации2ОдногоДизайнаВкг; // // ВырубкаВкг=ВырубкаВкг+ВырубкаОдногоДизайнаВкг; // // // // РасходОсновногоМатериала=РасходОсновногоМатериала+РасходОсновногоМатериалаОдногоДизайна; // // РасходМатериалаЛаминации1=РасходМатериалаЛаминации1+РасходМатериалаЛаминации1ОдногоДизайна; // // РасходМатериалаЛаминации2=РасходМатериалаЛаминации2+РасходМатериалаЛаминации2ОдногоДизайна; // // // // РасходОсновногоМатериалаВквМ=РасходОсновногоМатериалаВквМ+РасходОсновногоМатериалаОдногоДизайнаВквМ; // // ОбщийРасходКрасокВкг=ОбщийРасходКрасокВкг+ОбщийРасходКрасокОдногоДизайнаВкг; // // // // РасходРастворителяДляКрасокВкг=РасходРастворителяДляКрасокВкг+РасходРастворителяДляКрасокОдногоДизайнаВкг; // // РасходСвязующегоВкг=РасходСвязующегоВкг+РасходСвязующегОдногоДизайнаВкг; // // РасходЗамедлителяВкг=РасходЗамедлителяВкг+РасходЗамедлителяОдногоДизайнаВкг; // // РасходУскорителяВкг=РасходУскорителяВкг+РасходУскорителяОдногоДизайнаВкг; // // РасходДобавкиВкг=РасходДобавкиВкг+РасходДобавкиОдногоДизайнаВкг; // // // // РасходКлеяДляЛаминации1=РасходКлеяДляЛаминации1+КлейДляЛаминации1; // // РасходКлеяДляЛаминации2=РасходКлеяДляЛаминации2+КлейДляЛаминации2; // // РасходСмывкиКлеяВкг=РасходСмывкиКлеяВкг+СмывкаКлея; // // // // НормаДемпфера=НормаДемпфера+НормаДемпфераОдногоДизайна; // // РасходРастворителяДляСмывкиСекций=РасходРастворителяДляСмывкиСекций+РасходРастворителяДляСмывкиСекцийОдногоДизайна; // // // // СуммарныйВесВсехДизайновБезДна=СуммарныйВесВсехДизайновБезДна+ ВесОдногоДизайнаБезДна; // // // // ВесДнаВсехДизайнов=ВесДнаВсехДизайнов+ВесДнаВТиражеОдногоДизайна; // //КонецЦикла; // // // // // // // ////кромка // //СписокДанных.Установить("РасчетныйОбъем",СуммарныйВесВсехДизайновБезДна); // //СписокДанных.Установить("ОбщаяШиринаВсехДизайновВОдномШагеПечати", ОбщаяШиринаВсехДизайновВОдномШагеПечати); // //КоэфициентДизайнаВЗаказе=1; // //СписокДанных.Установить("КоэфициентДизайнаВЗаказе",КоэфициентДизайнаВЗаказе); // // // //СписокДанных.Установить("Материал",ОсновнойМатериал); // //СписокДанных.Установить("КакойМатериал","ОсновнойМатериал"); // //СписокДанных.Установить("ТолщинаМатериала",ТолщинаОсновногоМатериала); // //СписокДанных.Установить("КоефНашегоМатериала",КоефНашегоОснМатериала); // //СписокДанных.Установить("ДавальческийВесМатериала",ДавальческийВесОснМатериала); // //СписокДанных.Установить("ФорматМатериала",ШиринаСырьяОсновногоМатериала-ОбщаяШиринаВсехДизайновВОдномШагеПечати); // //списокДанных.Установить("тбКраски",ОбщаяТаблицаКрасок); // //КоличествоВалов=УстановитьКолВалов(списокДанных); // //СписокДанных.Установить("КоличествоВалов",КоличествоВалов); // // // ////Кол_квМТиража=Кол_квМТиража; // //КолКвМТиража=Кол_квМТиража(СписокДанных); // // // ////КолПМТиража=КолПогонМетровТиража(СписокДанных); // //КвоПМТиража=КвоПогонМетровТиража; // // // // // //ПлощадьДляКлеяПодРезиновыйВалВквМ // //=(ШиринаРезиновогоВала-ОбщаяШиринаВсехДизайновВОдномШагеПечати)/1000*(КвоПМТиража); // //СписокДанных.Установить("ПлощадьДляКлеяПодРезиновыйВалВквМ",ПлощадьДляКлеяПодРезиновыйВалВквМ); // // // // // // // //ПриладкаПечатиДляКромкиМатериалаПечатиВкг=ПриладкаПечатиДляКромкиМатериалаПечатиВкг(списокДанных); // //КромкаМатериалаПечатиВкг=КромкаМатериалаПечатиВкг(списокДанных); // //СписокДанных.Установить("РасчетныйОбъем",КромкаМатериалаПечатиВкг); // // // // // // // //СписокДанных.Установить("Материал",МатериалЛаминации1); // //СписокДанных.Установить("КакойМатериал","МатериалЛаминации1"); // //СписокДанных.Установить("ТолщинаМатериала",ТолщинаМатериалаЛаминации1); // //СписокДанных.Установить("КоефНашегоМатериала",КоефНашегоМатериалаЛаминации1); // //СписокДанных.Установить("ДавальческийВесМатериала",ДавальческийВесМатериалаЛаминации1); // //СписокДанных.Установить("ФорматМатериала",ШиринаСырьяМатериалаЛаминации1-ОбщаяШиринаВсехДизайновВОдномШагеПечати); // //КромкаМатериалаДляЛаминации1Вкг=КромкаМатериалаЛаминации1Вкг(СписокДанных); // // // //СписокДанных.Установить("Материал",МатериалЛаминации2); // //СписокДанных.Установить("КакойМатериал","МатериалЛаминации2"); // //СписокДанных.Установить("ТолщинаМатериала",ТолщинаМатериалаЛаминации2); // //СписокДанных.Установить("КоефНашегоМатериала",КоефНашегоМатериалаЛаминации2); // //СписокДанных.Установить("ДавальческийВесМатериала",ДавальческийВесМатериалаЛаминации2); // //СписокДанных.Установить("ФорматМатериала",ШиринаСырьяМатериалаЛаминации2-ОбщаяШиринаВсехДизайновВОдномШагеПечати); // //КромкаМатериалаДляЛаминации2Вкг=КромкаМатериалаЛаминации2Вкг(СписокДанных); // // // // // //КлейДляЛаминации1=РасходКлеяДляКромкиЛаминации1Вкг(СписокДанных); // //КлейДляЛаминации2=РасходКлеяДляКромкиЛаминации2Вкг(СписокДанных); // // // ////РасходКлеяДляКромкиВкг=РасходКлеяДляКромкиВкг(СписокДанных); // // // ////---------------------------------------------- // // // ////теперь сложим расход материалов и клея без кромки и расход материалов и клея на кромку // //РасходОсновногоМатериала=РасходОсновногоМатериала+КромкаМатериалаПечатиВкг+ПриладкаПечатиДляКромкиМатериалаПечатиВкг; // //РасходМатериалаЛаминации1=РасходМатериалаЛаминации1+КромкаМатериалаДляЛаминации1Вкг; // //РасходМатериалаЛаминации2=РасходМатериалаЛаминации2+КромкаМатериалаДляЛаминации2Вкг; // // // // // //РасходКлеяДляЛаминации1=РасходКлеяДляЛаминации1+КлейДляЛаминации1; // //РасходКлеяДляЛаминации2=РасходКлеяДляЛаминации2+КлейДляЛаминации2; // ////РасходКлеяВкг=РасходКлеяВкг+РасходКлеяДляКромкиВкг; // // // //ПриладкаПечатиВкг=ПриладкаПечатиВкг+ПриладкаПечатиДляКромкиМатериалаПечатиВкг; // // // ////---------------------------------------------- // // // // // //СписокДанных.Установить("РасходОсновногоМатериалаВквМ",РасходОсновногоМатериалаВквМ); // // // //ИТЗНормыРасхода.НоваяСтрока(); // //ИТЗНормыРасхода.Идентификатор="КвоПМТиража"; // //ИТЗНормыРасхода.Значение=КвоПМТиража; // // // //Если ОбщаяНормаПечатнойФормы<>0 Тогда // // ИТЗНормыРасхода.НоваяСтрока(); // // ИТЗНормыРасхода.Идентификатор="РасходПечатнойФормы"; // // ИТЗНормыРасхода.Значение=ОбщаяНормаПечатнойФормы; // //КонецЕсли; // // // // // //Если НормаДемпфера<>0 Тогда // // ИТЗНормыРасхода.НоваяСтрока(); // // ИТЗНормыРасхода.Идентификатор="РасходДемпфера"; // // ИТЗНормыРасхода.Значение=НормаДемпфера; // //КонецЕсли; // // // ////ЗатратыКрасок // //Если ОбщийРасходКрасокВкг<>0 Тогда // // ОбщаяТаблицаКрасок.ВыбратьСтроки(); // // Пока ОбщаяТаблицаКрасок.ПолучитьСтроку()=1 Цикл // // ЗатратыОднойКраскиВкг =0; // // Если (ПустоеЗначение(ОбщаяТаблицаКрасок.Краска)=1)ИЛИ(ОбщаяТаблицаКрасок.ПроцентЗапечатки<=0) Тогда // // Продолжить; // // КонецЕсли; // // НормаАнилокса=РасходныйКоеффициентАнилокс(ОбщаяТаблицаКрасок); // // НормаЗатрат=(НормаАнилокса* ОбщаяТаблицаКрасок.ПроцентЗапечатки)/100; // // // // СписокДанных.Установить("НомСтроки",ОбщаяТаблицаКрасок.НомерСтроки); // // ЗатратыОднойКраскиВкг = ЗатратыОднойКраскиВкг(СписокДанных); // // СухиеЗатратыОднойКраскиВкг=СухиеЗатратыОднойКраскиВкг(СписокДанных); // // // // ИТКраски.НоваяСтрока(); // // ИТКраски.Краска=ОбщаяТаблицаКрасок.Краска; // // ИТКраски.Анилокс=ОбщаяТаблицаКрасок.Анилокс; // // ИТКраски.ПроцентЗапечатки=ОбщаяТаблицаКрасок.ПроцентЗапечатки; // // ИТКраски.РасходНорма=ЗатратыОднойКраскиВкг; // // // // КонецЦикла; // //КонецЕсли; // // // // // // // // // //Если (РасходРастворителяДляКрасокВкг<>0)Тогда // // ИТЗНормыРасхода.НоваяСтрока(); // // ИТЗНормыРасхода.Идентификатор="РасходРастворителяДляКрасок"; // // ИТЗНормыРасхода.Значение=РасходРастворителяДляКрасокВкг; // //КонецЕсли; // //Если (РасходРастворителяДляСмывкиСекций<>0) Тогда // // ИТЗНормыРасхода.НоваяСтрока(); // // ИТЗНормыРасхода.Идентификатор="РасходРастворителяДляСмывкиСекций"; // // ИТЗНормыРасхода.Значение=РасходРастворителяДляСмывкиСекций; // //КонецЕсли; // // // // // // // // // //ИТЗНормыРасхода.НоваяСтрока(); // //ИТЗНормыРасхода.Идентификатор="РасходСвязующего"; // //ИТЗНормыРасхода.Значение=РасходСвязующегоВкг; // //ИТЗНормыРасхода.НоваяСтрока(); // //ИТЗНормыРасхода.Идентификатор="РасходЗамедлителя"; // //ИТЗНормыРасхода.Значение=РасходЗамедлителяВкг; // // // //ИТЗНормыРасхода.НоваяСтрока(); // //ИТЗНормыРасхода.Идентификатор="РасходАдгезийнойДобавки"; // //ИТЗНормыРасхода.Значение=РасходДобавкиВкг; // // // //ИТЗНормыРасхода.НоваяСтрока(); // //ИТЗНормыРасхода.Идентификатор="РасходУскорителя"; // //ИТЗНормыРасхода.Значение=РасходУскорителяВкг; // // // // // //ИТЗНормыРасхода.НоваяСтрока(); // //ИТЗНормыРасхода.Идентификатор="РасходКлеяДляЛаминации1"; // //ИТЗНормыРасхода.Значение=РасходКлеяДляЛаминации1; // // // //ИТЗНормыРасхода.НоваяСтрока(); // //ИТЗНормыРасхода.Идентификатор="РасходКлеяДляЛаминации2"; // //ИТЗНормыРасхода.Значение=РасходКлеяДляЛаминации2; // // // //ИТЗНормыРасхода.НоваяСтрока(); // //ИТЗНормыРасхода.Идентификатор="РасходСмывкиКлея"; // //ИТЗНормыРасхода.Значение=РасходСмывкиКлеяВкг; // // // // // // // //ДополнительнаяПорезка=ДополнительнаяПорезка(Обьем); // //Наименование = "Дополнительная порезка" ; // //Если ЕстьДополнительнаяПорезка= Перечисление.ДаНет.Нет Тогда // //Иначе // //КонецЕсли; // // // // // // // //Если ПриладкаЭкструдераВкг<>0 Тогда // //КонецЕсли; // // // //Если ТехОтходыЭкструзииВкг<>0 Тогда // //КонецЕсли; // // // //СписокДанных.Установить("Материал",ОсновнойМатериал); // //СписокДанных.Установить("КакойМатериал","ОсновнойМатериал"); // //СписокДанных.Установить("ТолщинаМатериала",ТолщинаОсновногоМатериала); // //СписокДанных.Установить("КоефНашегоМатериала",КоефНашегоОснМатериала); // // // //Если ПриладкаПечатиВкг<>0 Тогда // // ИТЗНормыРасхода.НоваяСтрока(); // // ИТЗНормыРасхода.Идентификатор="ПриладкаПечати"; // // ИТЗНормыРасхода.Значение=ПриладкаПечатиВкг; // //КонецЕсли; // //Если ТехОтходыПечатиВкг<>0 Тогда // // ИТЗНормыРасхода.НоваяСтрока(); // // ИТЗНормыРасхода.Идентификатор="ТехОтходыПечати"; // // ИТЗНормыРасхода.Значение=ТехОтходыПечатиВкг; // //КонецЕсли; // // // // // // // // // //Если ТехОтходыОбратнойПечатиВкг<>0 Тогда // // ИТЗНормыРасхода.НоваяСтрока(); // // ИТЗНормыРасхода.Идентификатор="ТехОтходыОбратнойПечати"; // // ИТЗНормыРасхода.Значение=ТехОтходыПечатиВкг; // //КонецЕсли; // // // ////Если ТехОтходыПриРезкеЛаминатаДляОсновногоМатериалаВкг<>0 Тогда // //// ИТЗНормыРасхода.НоваяСтрока(); // //// ИТЗНормыРасхода.Идентификатор="ТехОтходыПриРезкеЛаминатаДляОсновногоМатериала"; // //// ИТЗНормыРасхода.Значение=ТехОтходыПриРезкеЛаминатаДляОсновногоМатериалаВкг; // ////КонецЕсли; // ////Если ТехОтходыПриРезкеЛаминатаДляМатериалаЛаминации1Вкг<>0 Тогда // //// ИТЗНормыРасхода.НоваяСтрока(); // //// ИТЗНормыРасхода.Идентификатор="ТехОтходыПриРезкеЛаминатаДляМатериалаЛаминации1"; // //// ИТЗНормыРасхода.Значение=ТехОтходыПриРезкеЛаминатаДляМатериалаЛаминации1Вкг; // ////КонецЕсли; // ////Если ТехОтходыПриРезкеЛаминатаДляМатериалаЛаминации2Вкг<>0 Тогда // //// ИТЗНормыРасхода.НоваяСтрока(); // //// ИТЗНормыРасхода.Идентификатор="ТехОтходыПриРезкеЛаминатаДляМатериалаЛаминации2"; // //// ИТЗНормыРасхода.Значение=ТехОтходыПриРезкеЛаминатаДляМатериалаЛаминации2Вкг; // ////КонецЕсли; // //// // //// // ////Если ТехОтходыПриЛаминацииОсновногоМатериалаВкг<>0 Тогда // //// ИТЗНормыРасхода.НоваяСтрока(); // //// ИТЗНормыРасхода.Идентификатор="ТехОтходыПриЛаминацииОсновногоМатериала"; // //// ИТЗНормыРасхода.Значение=ТехОтходыПриЛаминацииОсновногоМатериалаВкг; // ////КонецЕсли; // //// // ////Если ТехОтходыЛаминацииМатериалаЛаминации1Вкг<>0 Тогда // //// ИТЗНормыРасхода.НоваяСтрока(); // //// ИТЗНормыРасхода.Идентификатор="ТехОтходыЛаминацииМатериалаЛаминации1"; // //// ИТЗНормыРасхода.Значение=ТехОтходыЛаминацииМатериалаЛаминации1Вкг; // ////КонецЕсли; // //// // ////Если ТехОтходыЛаминацииМатериалаЛаминации2Вкг<>0 Тогда // //// ИТЗНормыРасхода.НоваяСтрока(); // //// ИТЗНормыРасхода.Идентификатор="ТехОтходыЛаминацииМатериалаЛаминации2"; // //// ИТЗНормыРасхода.Значение=ТехОтходыЛаминацииМатериалаЛаминации2Вкг; // ////КонецЕсли; // // // ////Если ПриладкаПриРезкеВкг<>0 Тогда // //// ИТЗНормыРасхода.НоваяСтрока(); // //// ИТЗНормыРасхода.Идентификатор="ПриладкаПриРезке"; // //// ИТЗНормыРасхода.Значение=ПриладкаПриРезкеВкг; // ////КонецЕсли; // //// // ////Если ТехОтходыПриРезкеВкг<>0 Тогда // //// ИТЗНормыРасхода.НоваяСтрока(); // //// ИТЗНормыРасхода.Идентификатор="ТехОтходыПриРезке"; // //// ИТЗНормыРасхода.Значение=ТехОтходыПриРезкеВкг; // ////КонецЕсли; // // // //Если ПриладкаПриРазбивкеВкг<>0 Тогда // //КонецЕсли; // // // //Если ТехОтходыПриРазбивкеОсновногоМатериалаВкг<>0 Тогда // //КонецЕсли; // //Если ТехОтходыПриРазбивкеМатериалаЛаминации1Вкг<>0 Тогда // //КонецЕсли; // //Если ТехОтходыПриРазбивкеМатериалаЛаминации2Вкг<>0 Тогда // //КонецЕсли; // // // //Если ВырубкаВкг<>0 Тогда // // Наименование="Тех.отходы при Вырубке в кг"; // //КонецЕсли; // // // //Если КромкаМатериалаПечатиВкг<>0 Тогда // // ИТЗНормыРасхода.НоваяСтрока(); // // ИТЗНормыРасхода.Идентификатор="КромкаОсновногоМатериала"; // // ИТЗНормыРасхода.Значение=КромкаМатериалаПечатиВкг; // //КонецЕсли; // // // //Если КромкаМатериалаДляЛаминации1Вкг<>0 Тогда // // ИТЗНормыРасхода.НоваяСтрока(); // // ИТЗНормыРасхода.Идентификатор="КромкаМатериалаДляЛаминации1"; // // ИТЗНормыРасхода.Значение=КромкаМатериалаДляЛаминации1Вкг; // //КонецЕсли; // // // //Если КромкаМатериалаДляЛаминации2Вкг<>0 Тогда // // ИТЗНормыРасхода.НоваяСтрока(); // // ИТЗНормыРасхода.Идентификатор="КромкаМатериалаДляЛаминации2"; // // ИТЗНормыРасхода.Значение=КромкаМатериалаДляЛаминации2Вкг; // //КонецЕсли; // // // // // // // // // // // //Если КоличествоПереклеек<>0 Тогда // // КвоПереклеек=КоличествоПереклеек; // //КонецЕсли; // // // // // // //КонецПроцедуры //-------------------------------------------------------------------------------------------------------------------------------------------------------------------- Процедура ИзмениласьЕдИзмДляЭкономистов() ЕдИзмДляЭкономистов=спЕдИзмДляЭкономистов.ПолучитьЗначение(спЕдИзмДляЭкономистов.ТекущаяСтрока()); ЗаполнитьТаблицыДляЭкономиста(ОбьемДляЭкономистов); КонецПроцедуры //-------------------------------------------------------------------------------------------------------------------------------------------------------------------- Процедура ЗаполнитьТаблицыДляЭкономиста(МассаИлиТираж=1000) Если МассаИлиТираж=0 Тогда МассаИлиТираж=1000; КонецЕсли; ИТСтрокиДокумента.ВНачало(); Пока ИТСтрокиДокумента.СледующаяСтрока()=1 Цикл Если ИТСтрокиДокумента.РазверткаДизайна=0 Тогда ТекстПредупреждения= "Не выбрана развертка!"+РазделительСтрок+"Обратитесь к технологу!"; Предупреждение(ТекстПредупреждения); Возврат; КонецЕсли; КонецЦикла; Если РасчетСделан=0 Тогда СделатьРасчет(); КонецЕсли; кг=0; тыс_шт=1; Обьем=0; Тираж=0; КакСчитаемДляЭкономистов=0; Если ЕдИзмДляЭкономистов=кг Тогда КакСчитаемДляЭкономистов=СчитаемОтМассы; Обьем=МассаИлиТираж; ИначеЕсли ЕдИзмДляЭкономистов=тыс_шт Тогда КакСчитаемДляЭкономистов=СчитаемОтТиража; Тираж= МассаИлиТираж; Иначе//если Обьем=0 и Тираж=0 , то ошибка Сообщить("Ошибка в Процедура ЗаполнитьТаблицыДляЭкономиста"); СтатусВозврата(0); Возврат ; КонецЕсли; КонтекстФормы=глВернутьКонтекст(Контекст); Если ОбщаяРасчетнаяТаблица.КоличествоСтрок()>0 Тогда МассаДляПереклейки=ОбщаяРасчетнаяТаблица.ПолучитьЗначение(1,"Масса"); ТиражДляПереклейки=ОбщаяРасчетнаяТаблица.ПолучитьЗначение(1,"Тираж"); Иначе МассаДляПереклейки=0; ТиражДляПереклейки=0; КонецЕсли; НормыРасчета.МассаДляПереклейки=МассаДляПереклейки; НормыРасчета.ТиражДляПереклейки=ТиражДляПереклейки; НормыРасчета.УстановитьДокумент(КонтекстФормы); НормыРасчета.КакСчитаем=КакСчитаемДляЭкономистов; НормыРасчета.РасчитатьВесТысячи(); РасчетСтоимости.УстановитьДокумент(КонтекстФормы,НормыРасчета); НормыРасчета.МассаПриладки=Обьем; НормыРасчета.ТиражПриладки=Тираж; НормыРасчета.ВыполнитьРасчетНорм(); РасчетСтоимости.ВыполнитьРасчет(); Обьем=НормыРасчета.МассаПриладки; Тираж=НормыРасчета.ТиражПриладки; СоздатьТаблицыДляСтраницыЭкономистов(); ОбьемДляЭкономистов=МассаИлиТираж; Себистоимость=0; РасчетныйОбъем=Обьем; ОбщаяГраматураПродукцииДляЭкономистов= НормыРасчета.ОбщаяГрамматураПродукции; ОбщаяСебистоимостьПечатныхФорм=РасчетСтоимости.СебистоимостьПечатныхФорм(); СумарныйВесПо1ТысячиВсехДорожек=НормыРасчета.СумарныйВесПо1ТысячиВсехДорожек(); КолКвМТиражаДляЭкономистов=НормыРасчета.КвоКвМТиражаПриладки; КолПМТиражаДляЭкономистов=НормыРасчета.КолПогонМетровТиражаПриладки; РасходОсновногоМатериала=НормыРасчета.РасходОсновногоМатериала(); КоефНашегоМатериала=КоефНашегоОснМатериала; ДавальческийВесМатериала=ДавальческийВесОснМатериала; ЦенаЗаКило=РасчетСтоимости.ЦенаМатериала(ОсновнойМатериал,"ОсновнойМатериал"); ЦенаЗаКило=ЦенаЗаКило*КоефНашегоМатериала; СебистоимостьОсновногоМатериала= РасчетСтоимости.СебистоимостьОсновногоМатериала(); Если РасходОсновногоМатериала<>0 Тогда Наименование="(Осн.мат.) "+ОсновнойМатериал+?(ДавальческийВесМатериала=0,"","(давал.сырье "+ДавальческийВесМатериала+" кг)"); ВспомогПроцедура(тбПроцессы,"Процессы",Наименование,РасходОсновногоМатериала,ЦенаЗаКило,СебистоимостьОсновногоМатериала); КонецЕсли; РасходМатериалаЛаминации1=НормыРасчета.РасходМатериалаЛаминации1(); КоефНашегоМатериала=КоефНашегоМатериалаЛаминации1; ДавальческийВесМатериала=ДавальческийВесМатериалаЛаминации1; ЦенаЗаКило=РасчетСтоимости.ЦенаМатериала(МатериалЛаминации1,"МатериалЛаминации1"); ЦенаЗаКило=ЦенаЗаКило*КоефНашегоМатериала; СебистоимостьМатериалаЛаминации1= РасчетСтоимости.СебистоимостьМатериалаЛаминации1(); Если РасходМатериалаЛаминации1<>0 Тогда Наименование="(Мат.1-ой лам.) "+МатериалЛаминации1+?(ДавальческийВесМатериала=0,"","(давал.сырье "+ДавальческийВесМатериала+" кг)"); ВспомогПроцедура(тбПроцессы,"Процессы",Наименование,РасходМатериалаЛаминации1,ЦенаЗаКило,СебистоимостьМатериалаЛаминации1); КонецЕсли; РасходМатериалаЛаминации2=НормыРасчета.РасходМатериалаЛаминации2(); КоефНашегоМатериала=КоефНашегоМатериалаЛаминации2; ДавальческийВесМатериала=ДавальческийВесМатериалаЛаминации2; ЦенаЗаКило=РасчетСтоимости.ЦенаМатериала(МатериалЛаминации2,"МатериалЛаминации2"); ЦенаЗаКило=ЦенаЗаКило*КоефНашегоМатериала; СебистоимостьМатериалаЛаминации2= РасчетСтоимости.СебистоимостьМатериалаЛаминации2(); Если РасходМатериалаЛаминации2<>0 Тогда Наименование="(Мат.2-ой лам.) "+МатериалЛаминации2+?(ДавальческийВесМатериала=0,"","(давал.сырье "+ДавальческийВесМатериала+" кг)"); ВспомогПроцедура(тбПроцессы,"Процессы",Наименование,РасходМатериалаЛаминации2,ЦенаЗаКило,СебистоимостьМатериалаЛаминации2); КонецЕсли; НормаДемпфера=НормыРасчета.РасходДемпфера(); Наименование="Демпфер"; СебистоимостьДемпфера=РасчетСтоимости.СебистоимостьДемпфера(); Если НормаДемпфера<>0 Тогда ВспомогПроцедура(тбПроцессы,"Процессы",Наименование,НормаДемпфера,РасчетСтоимости.ЦенаквМДемфера,СебистоимостьДемпфера); КонецЕсли; //ЗатратыКрасок ОбщийРасходКрасок=НормыРасчета.РасходКрасок(); СебистоимостьКрасок= РасчетСтоимости.СебистоимостьКрасок(); ОбщаяТаблицаКрасок=НормыРасчета.ТаблицаКрасок(); ОбщаяТаблицаКрасок.ВыбратьСтроки(); Пока ОбщаяТаблицаКрасок.ПолучитьСтроку()=1 Цикл ЗатратыОднойКраскиВкг =0; Краска=ОбщаяТаблицаКрасок.Краска; ПроцентЗапечатки=ОбщаяТаблицаКрасок.ПроцентЗапечатки; Если (ПустоеЗначение(Краска)=1)ИЛИ(ПроцентЗапечатки<=0) Тогда Продолжить; КонецЕсли; Анилокс=ОбщаяТаблицаКрасок.Анилокс; НормаАнилокса=Анилокс.Норма; НормаЗатрат=(НормаАнилокса* ОбщаяТаблицаКрасок.ПроцентЗапечатки)/100; ЗатратыОднойКраскиВкг = НормыРасчета.РасходКрасок(,Краска); Цена=РасчетСтоимости.ЦенаКраски(Краска); СебистоимостьОднойКраски= РасчетСтоимости.СебистоимостьКрасок(,Краска); СухиеЗатратыОднойКраскиВкг=НормыРасчета.СухойПривесКрасок(,Краска); ВспомогПроцедура(тбЗатратыКрасок,"ЗатратыКрасок",ОбщаяТаблицаКрасок.Краска.Наименование,ОбщаяТаблицаКрасок.ПроцентЗапечатки, НормаЗатрат,ЗатратыОднойКраскиВкг,НормаАнилокса,Цена,СебистоимостьОднойКраски,СухиеЗатратыОднойКраскиВкг); КонецЦикла; Если ОбщийРасходКрасок<>0 Тогда Наименование="Краска"; ВспомогПроцедура(тбПроцессы,"Процессы",Наименование,ОбщийРасходКрасок,0,СебистоимостьКрасок,"ЗатратыКрасок"); КонецЕсли; РасходРастворителяДляКрасок=НормыРасчета.РасходРастворителяДляКрасок(); Наименование="Растворитель"; ЦенаРастворителя=РасчетСтоимости.ЦенаЗаКилоРастворителя; СебистоимостьРастворителяДляКрасок=РасчетСтоимости.СебистоимостьРастворителяДляКрасок(); Если (РасходРастворителяДляКрасок<>0) Тогда ВспомогПроцедура(тбПроцессы,"Процессы",Наименование,РасходРастворителяДляКрасок,ЦенаРастворителя,СебистоимостьРастворителяДляКрасок); КонецЕсли; Наименование="Растворитель для смывки секций"; РасходРастворителяДляСмывкиСекций=НормыРасчета.РасходРастворителяДляСмывкиСекций(); СебистоимостьРастворителяДляСмывкиСекций=РасчетСтоимости.СебистоимостьРастворителяДляСмывкиСекций(); Если (РасходРастворителяДляСмывкиСекций<>0) Тогда ВспомогПроцедура(тбПроцессы,"Процессы",Наименование,РасходРастворителяДляСмывкиСекций,ЦенаРастворителя,СебистоимостьРастворителяДляСмывкиСекций); КонецЕсли; РасходСвязующего=НормыРасчета.РасходСвязующего(); Наименование="Связующее"; ЦенаЗаКилоСвязующего=РасчетСтоимости.ЦенаЗаКилоСвязующего; СебистоимостьСвязующего=РасчетСтоимости.СебистоимостьСвязующего(); Если РасходСвязующего<>0 Тогда ВспомогПроцедура(тбПроцессы,"Процессы",Наименование,РасходСвязующего,ЦенаЗаКилоСвязующего,СебистоимостьСвязующего); КонецЕсли; РасходЗамедлителя=НормыРасчета.РасходЗамедлителя(); Наименование="Замедлитель"; ЦенаЗаКилоЗамедлителя=РасчетСтоимости.ЦенаЗаКилоЗамедлителя; СебистоимостьЗамедлителя=РасчетСтоимости.СебистоимостьЗамедлителя(); Если РасходЗамедлителя<>0 Тогда ВспомогПроцедура(тбПроцессы,"Процессы",Наименование,РасходЗамедлителя,ЦенаЗаКилоЗамедлителя,СебистоимостьЗамедлителя); КонецЕсли; РасходАдгезийнойДобавки=НормыРасчета.РасходАдгезийнойДобавки(); Наименование="Адгезийная добавка"; ЦенаЗаКилоДобавки=РасчетСтоимости.ЦенаЗаКилоДобавки; СебистоимостьАдгезийнойДобавки=РасчетСтоимости.СебистоимостьАдгезийнойДобавки(); Если РасходАдгезийнойДобавки<>0 Тогда ВспомогПроцедура(тбПроцессы,"Процессы",Наименование,РасходАдгезийнойДобавки,ЦенаЗаКилоДобавки,СебистоимостьАдгезийнойДобавки); КонецЕсли; РасходУскорителя=НормыРасчета.РасходУскорителя(); Наименование="Ускоритель"; ЦенаЗаКилоУскорителя=РасчетСтоимости.ЦенаЗаКилоУскорителя; СебистоимостьУскорителя=РасчетСтоимости.СебистоимостьУскорителя(); Если РасходУскорителя<>0 Тогда ВспомогПроцедура(тбПроцессы,"Процессы",Наименование,РасходУскорителя,ЦенаЗаКилоУскорителя,СебистоимостьУскорителя); КонецЕсли; РасходКлея=НормыРасчета.РасходКлея(); Наименование="Клей"; ЦенаЗаКилоКлея=РасчетСтоимости.ЦенаЗаКилоКлея; СебистоимостьКлея=РасчетСтоимости.СебистоимостьКлея(); Если РасходКлея<>0 Тогда ВспомогПроцедура(тбПроцессы,"Процессы",Наименование,РасходКлея,ЦенаЗаКилоКлея,СебистоимостьКлея); КонецЕсли; Себистоимость=Себистоимость+СебистоимостьОсновногоМатериала +СебистоимостьМатериалаЛаминации1+СебистоимостьМатериалаЛаминации2 +СебистоимостьДемпфера +СебистоимостьКрасок+СебистоимостьРастворителяДляКрасок+СебистоимостьРастворителяДляСмывкиСекций +СебистоимостьСвязующего+СебистоимостьЗамедлителя+СебистоимостьУскорителя +СебистоимостьАдгезийнойДобавки+СебистоимостьКлея; СтоимостьРазбивки=0; ЦенаРазбивки=0; ДопНакруткаНаРазбивку=0; //РасчетСтоимости.ОбщаяЦенаРазбивки(ЦенаРазбивки,ДопНакруткаНаРазбивку,ЦенаКлипсыЗаТысячуНаПриладку); ОбщаяСтоимостьРазбивки=РасчетСтоимости.ОбщаяСтоимостьРазбивки(); Если фПакетоделание=1 Тогда Наименование="Стоимость разбивки"; ВспомогПроцедура(тбПроцессы,"Процессы",Наименование,Тираж,ЦенаРазбивки,ОбщаяСтоимостьРазбивки); КонецЕсли; Себистоимость=Себистоимость+ОбщаяСтоимостьРазбивки; ДополнительнаяПорезка=РасчетСтоимости.ДополнительнаяПорезка(); Наименование = "Дополнительная порезка" ; Если ЕстьДополнительнаяПорезка= Перечисление.ДаНет.Нет Тогда Цена=0; Иначе Цена=РасчетСтоимости.ВернутьЦенуИзСправочникаЦенРасчета("ЦенаДополнительнойПорезки"); КонецЕсли; ВспомогПроцедура(тбПроцессы,"Процессы",Наименование,Обьем,Цена,ДополнительнаяПорезка); Себистоимость=Себистоимость+ДополнительнаяПорезка; ТранспортныеРасходы=РасчетСтоимости.ОбщиеТранспортныеРасходы(); СуммаНаКг=РасчетСтоимости.НакладныеЗатратыНаКг(); СуммаНакладныхЗатрат=Обьем*СуммаНаКг; ДопЗатраты=ДополнительныеЗатратыНаКг*РасчетныйОбъем+ОбщДополнительныеЗатраты; СтоимостьПереклеек=РасчетСтоимости.СтоимостьПереклеек(); Себистоимость=Себистоимость+ТранспортныеРасходы+СуммаНакладныхЗатрат +СтоимостьПереклеек+ОбщаяСебистоимостьПечатныхФорм+ДопЗатраты; ВырубкаВкг=НормыРасчета.Вырубка(); ЦенаЗаКилоВырубки=Константа.ЦенаВторички.Получить(ДатаДляЭкономистов); СтоимостьВырубки=ВырубкаВкг*ЦенаЗаКилоВырубки; ПриладкаЭкструдераВкг=НормыРасчета.ПриладкаЭкструдера(); ТехОтходыЭкструзииВкг=НормыРасчета.ТехОтходыЭкструзии(); ПриладкаПечатиВкг=НормыРасчета.ПриладкаПечати(); ТехОтходыПечатиВкг=НормыРасчета.ТехОтходыПечати(); ТехОтходыОбратнойПечатиВкг=НормыРасчета.ТехОтходыОбратнойПечати(); ТехОтходыПриРезкеЛаминатаДляОсновногоМатериалаВкг=НормыРасчета.ТехОтходыПриРезкеЛаминатаДляОсновногоМатериала(); ТехОтходыПриРезкеЛаминатаДляМатериалаЛаминации1Вкг=НормыРасчета.ТехОтходыПриРезкеЛаминатаДляМатериалаЛаминации1(); ТехОтходыПриРезкеЛаминатаДляМатериалаЛаминации2Вкг=НормыРасчета.ТехОтходыПриРезкеЛаминатаДляМатериалаЛаминации2(); ТехОтходыПриЛаминацииОсновногоМатериалаВкг=НормыРасчета.ТехОтходыПриЛаминацииОсновногоМатериала(); ТехОтходыЛаминацииМатериалаЛаминации1Вкг=НормыРасчета.ТехОтходыЛаминацииМатериалаЛаминации1(); ТехОтходыЛаминацииМатериалаЛаминации2Вкг=НормыРасчета.ТехОтходыЛаминацииМатериалаЛаминации2(); ТехОтходыПриРезкеВкг=НормыРасчета.ТехОтходыПриРезке(); ПриладкаПриРезкеВкг=НормыРасчета.ПриладкаПриРезке(); ПриладкаПриРазбивкеВкг=НормыРасчета.ПриладкаПриРазбивке(); ТехОтходыПриРазбивкеОсновногоМатериалаВкг=НормыРасчета.ТехОтходыПриРазбивкеОсновногоМатериала(); ТехОтходыПриРазбивкеМатериалаЛаминации1Вкг=НормыРасчета.ТехОтходыПриРазбивкеМатериалаЛаминации1(); ТехОтходыПриРазбивкеМатериалаЛаминации2Вкг=НормыРасчета.ТехОтходыПриРазбивкеМатериалаЛаминации2(); КромкаМатериалаПечатиВкг=НормыРасчета.КромкаОсновногоМатериала(); КромкаМатериалаДляЛаминации1Вкг=НормыРасчета.КромкаМатериалаДляЛаминации1(); КромкаМатериалаДляЛаминации2Вкг=НормыРасчета.КромкаМатериалаДляЛаминации2(); Если ПриладкаЭкструдераВкг<>0 Тогда Наименование="Приладка экструдера в кг"; ВспомогПроцедура(тбБракИЗатраты,"БракИЗатраты",Наименование,ПриладкаЭкструдераВкг,0,0); КонецЕсли; Если ТехОтходыЭкструзииВкг<>0 Тогда Наименование="Тех.отходы экструзии в кг"; ВспомогПроцедура(тбБракИЗатраты,"БракИЗатраты",Наименование,ТехОтходыЭкструзииВкг,0,0); КонецЕсли; Если ПриладкаПечатиВкг<>0 Тогда Наименование="Приладка печати в кг"; ВспомогПроцедура(тбБракИЗатраты,"БракИЗатраты",Наименование,ПриладкаПечатиВкг,0,0); КонецЕсли; Если ТехОтходыПечатиВкг<>0 Тогда Если фПечать=1 Тогда Наименование="Тех.отходы печат.слоя в кг"; Иначе Наименование="Тех.отходы осн.слоя в кг"; КонецЕсли; ВспомогПроцедура(тбБракИЗатраты,"БракИЗатраты",Наименование,ТехОтходыПечатиВкг,0,0); КонецЕсли; Если ТехОтходыОбратнойПечатиВкг<>0 Тогда Наименование="Тех.отходы обратной печати в кг"; ВспомогПроцедура(тбБракИЗатраты,"БракИЗатраты",Наименование,ТехОтходыОбратнойПечатиВкг,0,0); КонецЕсли; Если ТехОтходыПриРезкеЛаминатаДляОсновногоМатериалаВкг<>0 Тогда Наименование="Тех.отходы осн.слоя при резке ламината в кг"; ВспомогПроцедура(тбБракИЗатраты,"БракИЗатраты",Наименование,ТехОтходыПриРезкеЛаминатаДляОсновногоМатериалаВкг,0,0); КонецЕсли; Если ТехОтходыПриРезкеЛаминатаДляМатериалаЛаминации1Вкг<>0 Тогда Наименование="Тех.отходы слоя Ламинации1 при резке ламината в кг"; ВспомогПроцедура(тбБракИЗатраты,"БракИЗатраты",Наименование,ТехОтходыПриРезкеЛаминатаДляМатериалаЛаминации1Вкг,0,0); КонецЕсли; Если ТехОтходыПриРезкеЛаминатаДляМатериалаЛаминации2Вкг<>0 Тогда Наименование="Тех.отходы слоя Ламинации2 при резке ламината в кг"; ВспомогПроцедура(тбБракИЗатраты,"БракИЗатраты",Наименование,ТехОтходыПриРезкеЛаминатаДляМатериалаЛаминации2Вкг,0,0); КонецЕсли; Если ТехОтходыПриЛаминацииОсновногоМатериалаВкг<>0 Тогда Наименование="Тех.отходы осн.слоя при ламинации в кг"; ВспомогПроцедура(тбБракИЗатраты,"БракИЗатраты",Наименование,ТехОтходыПриЛаминацииОсновногоМатериалаВкг,0,0); КонецЕсли; Если ТехОтходыЛаминацииМатериалаЛаминации1Вкг<>0 Тогда Наименование="Тех.отходы слоя Ламинации1 при ламинации в кг"; ВспомогПроцедура(тбБракИЗатраты,"БракИЗатраты",Наименование,ТехОтходыЛаминацииМатериалаЛаминации1Вкг,0,0); КонецЕсли; Если ТехОтходыЛаминацииМатериалаЛаминации2Вкг<>0 Тогда Наименование="Тех.отходы слоя Ламинации2 при ламинации в кг"; ВспомогПроцедура(тбБракИЗатраты,"БракИЗатраты",Наименование,ТехОтходыЛаминацииМатериалаЛаминации2Вкг,0,0); КонецЕсли; Если ПриладкаПриРезкеВкг<>0 Тогда Наименование="Приладка при резке в кг"; ВспомогПроцедура(тбБракИЗатраты,"БракИЗатраты",Наименование,ПриладкаПриРезкеВкг,0,0); КонецЕсли; Если ТехОтходыПриРезкеВкг<>0 Тогда Наименование="Тех.отходы при резке в кг"; ВспомогПроцедура(тбБракИЗатраты,"БракИЗатраты",Наименование,ТехОтходыПриРезкеВкг,0,0); КонецЕсли; Если ПриладкаПриРазбивкеВкг<>0 Тогда Наименование="Приладка при разбивке"; ВспомогПроцедура(тбБракИЗатраты,"БракИЗатраты",Наименование,ПриладкаПриРазбивкеВкг,0,0); КонецЕсли; Если ТехОтходыПриРазбивкеОсновногоМатериалаВкг<>0 Тогда Наименование="Тех.отходы осн.слоя при разбивке в кг"; ВспомогПроцедура(тбБракИЗатраты,"БракИЗатраты",Наименование,ТехОтходыПриРазбивкеОсновногоМатериалаВкг,0,0); КонецЕсли; Если ТехОтходыПриРазбивкеМатериалаЛаминации1Вкг<>0 Тогда Наименование="Тех.отходы Ламинации1 при разбивке в кг"; ВспомогПроцедура(тбБракИЗатраты,"БракИЗатраты",Наименование,ТехОтходыПриРазбивкеМатериалаЛаминации1Вкг,0,0); КонецЕсли; Если ТехОтходыПриРазбивкеМатериалаЛаминации2Вкг<>0 Тогда Наименование="Тех.отходы Ламинации2 при разбивке в кг"; ВспомогПроцедура(тбБракИЗатраты,"БракИЗатраты",Наименование,ТехОтходыПриРазбивкеМатериалаЛаминации2Вкг,0,0); КонецЕсли; Если (ДатаДляЭкономистов<=ДатаНачалаСебистоимостьМинусВырубка)ИЛИ(НашаФирма<>КоллекцияНашихФирм.Никатор) Тогда Если ВырубкаВкг<>0 Тогда Наименование="Тех.отходы при Вырубке в кг"; ВспомогПроцедура(тбБракИЗатраты,"БракИЗатраты",Наименование,ВырубкаВкг,0,0); КонецЕсли; КонецЕсли; Если КромкаМатериалаПечатиВкг<>0 Тогда Наименование="Кромка осн.материала в кг"; ВспомогПроцедура(тбБракИЗатраты,"БракИЗатраты",Наименование,КромкаМатериалаПечатиВкг,0,0); КонецЕсли; Если КромкаМатериалаДляЛаминации1Вкг<>0 Тогда Наименование="Кромка материала 1 ламинации в кг"; ВспомогПроцедура(тбБракИЗатраты,"БракИЗатраты",Наименование,КромкаМатериалаДляЛаминации1Вкг,0,0); КонецЕсли; Если КромкаМатериалаДляЛаминации2Вкг<>0 Тогда Наименование="Кромка материала 1 ламинации в кг"; ВспомогПроцедура(тбБракИЗатраты,"БракИЗатраты",Наименование,КромкаМатериалаДляЛаминации2Вкг,0,0); КонецЕсли; Наименование="Расходные материалы"; Норма=0; Сумма=тбПроцессы.Итог("Сумма"); ВспомогПроцедура(тбОбщая,"Общая",Наименование,Норма,Сумма,"Процессы"); ОбщаяНормаПечатнойФормы=НормыРасчета.РасходПечатныхФорм(); Если ОбщаяНормаПечатнойФормы<>0 Тогда Наименование="Печатная форма"; ВспомогПроцедура(тбОбщая,"Общая",Наименование,ОбщаяНормаПечатнойФормы,ОбщаяСебистоимостьПечатныхФорм); КонецЕсли; Наименование="Транспортные затраты"; ВспомогПроцедура(тбОбщая,"Общая",Наименование,Обьем,ТранспортныеРасходы); Наименование="Накладные затраты"; СуммаНаКг=РасчетСтоимости.НакладныеЗатратыНаКг(); СуммаНакладныхЗатрат=Обьем*СуммаНаКг; ВспомогПроцедура(тбОбщая,"Общая",Наименование,Обьем,СуммаНакладныхЗатрат,"НакладныеЗатраты"); Наименование="Дополнительные затраты(на 1 кг.)"; СуммаДополнительныхныхЗатрат=Обьем*ДополнительныеЗатратыНаКг; ВспомогПроцедура(тбОбщая,"Общая",Наименование,ДополнительныеЗатратыНаКг,СуммаДополнительныхныхЗатрат); Наименование="Общие дополнительные затраты"; ВспомогПроцедура(тбОбщая,"Общая",Наименование,ОбщДополнительныеЗатраты,ОбщДополнительныеЗатраты); Если КоличествоПереклеек<>0 Тогда Наименование="Переклейки"; КвоПереклеек=КоличествоПереклеек; Цена = РасчетСтоимости.ЦенаОднойПереклейки; СтоимостьПереклеек=РасчетСтоимости.СтоимостьПереклеек(); ВспомогПроцедура(тбОбщая,"Общая",Наименование,КвоПереклеек,СтоимостьПереклеек); КонецЕсли; Наименование="Тех.отходы"; Норма=тбБракИЗатраты.Итог("Вес"); Сумма=0; ВспомогПроцедура(тбОбщая,"Общая",Наименование,Норма,Сумма,"БракИЗатраты"); Если (ДатаДляЭкономистов>ДатаНачалаСебистоимостьМинусВырубка)И(НашаФирма=КоллекцияНашихФирм.Никатор) Тогда Если ВырубкаВкг<>0 Тогда Наименование="Минус Вырубка"; ВспомогПроцедура(тбОбщая,"Общая",Наименование,Окр(ВырубкаВкг,5,1),-Окр(СтоимостьВырубки,5,1)); КонецЕсли; КонецЕсли; СебистоимостьЗа1КГ=Себистоимость/Обьем; НазвНакруткиНеРентабельно="НеРентабельно"; НеРентабельно=РасчетСтоимости.Накрутка(НазвНакруткиНеРентабельно); НазвНакруткиПрибыльно="Прибыльно"; Прибыльно=РасчетСтоимости.Накрутка(НазвНакруткиПрибыльно); НазвНакруткиПремиально="Премиально"; Премиально=РасчетСтоимости.Накрутка(НазвНакруткиПремиально); ДопНакруткаНеРентабельно=0; ДопНакруткаПрибыльно=0; ДопНакруткаПремиально=0; Если фПакетоделание=1 Тогда ДопНакруткаНеРентабельно=РасчетСтоимости.ДопНакрутка(НазвНакруткиНеРентабельно); ДопНакруткаПрибыльно=РасчетСтоимости.ДопНакрутка(НазвНакруткиПрибыльно); ДопНакруткаПремиально=РасчетСтоимости.ДопНакрутка(НазвНакруткиПремиально); КонецЕсли; Наименование="Себистоимость"; ВспомогПроцедура(тбСтоимость,"Стоимость",Наименование,0,0,СебистоимостьЗа1КГ,Себистоимость); СтоимостьНеРентабельно=РасчетСтоимости.СтоимостьНеРентабельно(); СтоимостьОтсрочкиНеРентабельно=РасчетСтоимости.ВычислитьОбщуюСтоимостьОтсрочки(СтоимостьНеРентабельно); ПродСтоимостьНеРентабельно=РасчетСтоимости.ПродСтоимостьНеРентабельно(); ЦенаЗа1КГНеРентабельно= ПродСтоимостьНеРентабельно/Обьем; ВспомогПроцедура(тбСтоимость,"Стоимость",НазвНакруткиНеРентабельно,НеРентабельно,ДопНакруткаНеРентабельно,ЦенаЗа1КГНеРентабельно,ПродСтоимостьНеРентабельно); СтоимостьПрибыльно=РасчетСтоимости.СтоимостьПрибыльно(); СтоимостьОтсрочкиПрибыльно=РасчетСтоимости.ВычислитьОбщуюСтоимостьОтсрочки(СтоимостьПрибыльно); ПродСтоимостьПрибыльно=РасчетСтоимости.ПродСтоимостьПрибыльно(); ЦенаЗа1КГПрибыльно= ПродСтоимостьПрибыльно/Обьем; ВспомогПроцедура(тбСтоимость,"Стоимость",НазвНакруткиПрибыльно,Прибыльно,ДопНакруткаПрибыльно,ЦенаЗа1КГПрибыльно,ПродСтоимостьПрибыльно); СтоимостьПремиально=РасчетСтоимости.СтоимостьПремиально(); СтоимостьОтсрочкиПремиально=РасчетСтоимости.ВычислитьОбщуюСтоимостьОтсрочки(СтоимостьПремиально); ПродСтоимостьПремиально=РасчетСтоимости.ПродСтоимостьПремиально(); ЦенаЗа1КГПремиально= ПродСтоимостьПремиально/Обьем; ВспомогПроцедура(тбСтоимость,"Стоимость",НазвНакруткиПремиально,Премиально,ДопНакруткаПремиально,ЦенаЗа1КГПремиально,ПродСтоимостьПремиально); Наименование="Себистоимость"; Норма=Обьем; Сумма=Себистоимость; ВспомогПроцедура(тбОбщая,"Общая",Наименование,Норма,Сумма,"Стоимость"); Если фПечать=1 Тогда СебистоимостьБезКлише=Себистоимость-ОбщаяСебистоимостьПечатныхФорм; СебистоимостьЗа1КГБезКлише=СебистоимостьБезКлише/Обьем; Наименование="Себистоимость без клише"; ВспомогПроцедура(тбСтоимостьБезКлише,"Стоимость",Наименование,0,0,СебистоимостьЗа1КГБезКлише,СебистоимостьБезКлише); ПродСтоимостьБезКлишеНеРентабельно=ПродСтоимостьНеРентабельно-ОбщаяСебистоимостьПечатныхФорм; ЦенаЗа1КГБезКлишеНеРентабельно= ПродСтоимостьБезКлишеНеРентабельно/Обьем; ВспомогПроцедура(тбСтоимостьБезКлише,"Стоимость",НазвНакруткиНеРентабельно,НеРентабельно,ДопНакруткаНеРентабельно,ЦенаЗа1КГБезКлишеНеРентабельно,ПродСтоимостьБезКлишеНеРентабельно); ПродСтоимостьБезКлишеПрибыльно=ПродСтоимостьПрибыльно-ОбщаяСебистоимостьПечатныхФорм; ЦенаЗа1КГБезКлишеПрибыльно= ПродСтоимостьБезКлишеПрибыльно/Обьем; ВспомогПроцедура(тбСтоимостьБезКлише,"Стоимость",НазвНакруткиПрибыльно,Прибыльно,ДопНакруткаПрибыльно,ЦенаЗа1КГБезКлишеПрибыльно,ПродСтоимостьБезКлишеПрибыльно); ПродСтоимостьБезКлишеПремиально=ПродСтоимостьПремиально-ОбщаяСебистоимостьПечатныхФорм; ЦенаЗа1КГБезКлишеПремиально= ПродСтоимостьБезКлишеПремиально/Обьем; ВспомогПроцедура(тбСтоимостьБезКлише,"Стоимость",НазвНакруткиПремиально,Премиально,ДопНакруткаПремиально,ЦенаЗа1КГБезКлишеПремиально,ПродСтоимостьБезКлишеПремиально); Наименование="Себистоимость без клише"; Норма=Обьем; Сумма=СебистоимостьБезКлише; ВспомогПроцедура(тбОбщая,"Общая",Наименование,Норма,Сумма,"СтоимостьБезКлише"); КонецЕсли; Если ТекПозицияВИстории>1 Тогда Для ы=1 По спИстория.РазмерСписка() Цикл НазвТаблицы=""; спИстория.ПолучитьЗначение(ы,НазвТаблицы); Если НазвТаблицы="Общая" Тогда Значение=тбОбщая; ИначеЕсли НазвТаблицы="Процессы" Тогда Значение=тбПроцессы; ИначеЕсли НазвТаблицы="НакладныеЗатраты" Тогда Значение=тбНакладныеЗатраты; ИначеЕсли НазвТаблицы="ЗатратыКрасок" Тогда Значение=тбЗатратыКрасок; ИначеЕсли НазвТаблицы="БракИЗатраты" Тогда Значение=тбБракИЗатраты; ИначеЕсли НазвТаблицы="Стоимость" Тогда Значение=тбСтоимость; ИначеЕсли НазвТаблицы="СтоимостьБезКлише" Тогда Значение=тбСтоимостьБезКлише; КонецЕсли; спИстория.УстановитьЗначение(ы,Значение,НазвТаблицы); КонецЦикла; ТекущаяТаблица.Загрузить(спИстория.ПолучитьЗначение(ТекПозицияВИстории)); Иначе ТекущаяТаблица.Загрузить(тбОбщая); спИстория.УдалитьВсе(); спИстория.ДобавитьЗначение(тбОбщая,"Общая"); ТекПозицияВИстории=1; КонецЕсли; КонецПроцедуры //------------------------------------------------------------------------------------------------------------ Процедура СоздатьТаблицуДляЭкструзии(тб,НаименованиеКолонки="") Если тб.КоличествоКолонок()=0 Тогда Если ПустоеЗначение(НаименованиеКолонки)=1 Тогда тб.НоваяКолонка("Материал","Справочник.ПоизводственныеМатериалы"); тб.НоваяКолонка("ПроцентЗаполнения","Число",18,5,"% заполнения"); Иначе тб.НоваяКолонка("Материал","Справочник.ПоизводственныеМатериалы",,,НаименованиеКолонки,5,,1); тб.НоваяКолонка("ПроцентЗаполнения","Число",18,5,"% заполнения",3,,2); КонецЕсли; КонецЕсли; КонецПроцедуры //------------------------------------------------------------------------------------------------------------ Процедура СоздатьТаблицуКрасок(ТаблицаКрасок) Если ТаблицаКрасок.КоличествоКолонок()=0 Тогда ТаблицаКрасок.НоваяКолонка("Краска"); ТаблицаКрасок.НоваяКолонка("ПроцентЗапечатки"); ТаблицаКрасок.НоваяКолонка("КвоФотоФорм"); ТаблицаКрасок.НоваяКолонка("ПроцентСвязующего"); ТаблицаКрасок.НоваяКолонка("Цена"); ТаблицаКрасок.НоваяКолонка("Анилокс"); ТаблицаКрасок.ДобавитьИндекс("инКраска","Краска"); КонецЕсли; КонецПроцедуры //------------------------------------------------------------------------------------------------------------ Процедура СоздатьЭлементыТаблицыКонтрагентов(ВыбранКонтрагент,ТаблицаКонтрагентов) ТаблицаОплаты=СоздатьОбъект("ТаблицаЗначений"); ТаблицаОплаты.НоваяКолонка("Процент","Число",3,0,"% оплаты",8); ТаблицаОплаты.НоваяКолонка("КвоДней","Число",5,0,"К-во дней",8); ТаблицаКонтрагентов.Контрагент=ВыбранКонтрагент; //ТаблицаКонтрагентов.Договор="Договор"; //ТаблицаКонтрагентов.Спецификация="Спецификация"; ТаблицаКонтрагентов.тбРасчетнаяМасса=СоздатьТаблицуРасчетнаяМасса() ; ТаблицаКонтрагентов.тбОплаты=ТаблицаОплаты; КонецПроцедуры //------------------------------------------------------------------------------------------------------------ Процедура СоздатьТаблицыКонтрагентов(ТаблицаКонтрагентов) Если ТаблицаКонтрагентов.КоличествоКолонок()=0 Тогда ТаблицаКонтрагентов.НоваяКолонка("Контрагент","Справочник.Контрагенты",,,"Заказчик"); ТаблицаКонтрагентов.НоваяКолонка("Менеджер","Справочник.Сотрудник",,,"Менеджер"); ТаблицаКонтрагентов.НоваяКолонка("КоефициентОтОбщегоЗаказа","Число",19,9); ТаблицаКонтрагентов.НоваяКолонка("тбРасчетнаяМасса"); ТаблицаКонтрагентов.НоваяКолонка("Оплата1","Число",3,0); ТаблицаКонтрагентов.НоваяКолонка("Оплата2","Число",3,0); ТаблицаКонтрагентов.НоваяКолонка("Безнал","Число",3,0); ТаблицаКонтрагентов.НоваяКолонка("Нал","Число",3,0); ТаблицаКонтрагентов.НоваяКолонка("ЧьяДоставка","Число",1,0); ТаблицаКонтрагентов.НоваяКолонка("ВыборДоставки","Справочник.ЦеныДоставки"); ТаблицаКонтрагентов.НоваяКолонка("тбОплаты"); ТаблицаКонтрагентов.НоваяКолонка("фДругаяСтоимостьФорм","Число",1,0); ТаблицаКонтрагентов.НоваяКолонка("СебистоимостьПечатныхФорм","Число",12,5); ТаблицаКонтрагентов.НоваяКолонка("ПродажнаяСтоимостьФорм","Число",12,5); ТаблицаКонтрагентов.НоваяКолонка("УстановленныйОбъем","Число",12,4); ТаблицаКонтрагентов.НоваяКолонка("НестандартныйОбъем","Число",12,4); ТаблицаКонтрагентов.НоваяКолонка("УстановленнаяЦенаБезФорм","Число",15,3); ТаблицаКонтрагентов.НоваяКолонка("УстановленнаяЦена","Число",15,3); ТаблицаКонтрагентов.НоваяКолонка("Откат","Число",15,3); ТаблицаКонтрагентов.НоваяКолонка("УстановленнаяЦенаПоДокументам","Число",19,3); ТаблицаКонтрагентов.НоваяКолонка("РентабельностьЗаказа","Перечисление.Рентабельность"); ТаблицаКонтрагентов.НоваяКолонка("ЗаказВакиля","Документ"); КонецЕсли; КонецПроцедуры //------------------------------------------------------------------------------------------------------------ Процедура ЗагрузитьКонстантыИзРеквизитыСправочников() спр=СоздатьОбъект("Справочник.ШиринаРезиновогоВала"); спр.ИспользоватьДату(ДатаДляЭкономистов,1); спр.ПорядокКодов(); спр.ВыбратьЭлементы(); Пока спр.ПолучитьЭлемент()=1 Цикл Если спр.ПометкаУдаления()=1 Тогда Продолжить; КонецЕсли; спШиринаРезиновогоВала.ДобавитьЗначение(спр.ШиринаРезиновогоВала,""+спр.ШиринаРезиновогоВала); спШиринаВала2.ДобавитьЗначение(спр.ШиринаРезиновогоВала,""+спр.ШиринаРезиновогоВала); КонецЦикла; НомерШиринаРезиновогоВала=спШиринаРезиновогоВала.НайтиЗначение(ШиринаРезиновогоВала); Если НомерШиринаРезиновогоВала=0 Тогда Если (ШиринаРезиновогоВала>0) И (ШиринаРезиновогоВала<=спШиринаРезиновогоВала.РазмерСписка()) Тогда НомерШиринаРезиновогоВала=ШиринаРезиновогоВала; Иначе НомерШиринаРезиновогоВала=1; КонецЕсли; ШиринаРезиновогоВала=спШиринаРезиновогоВала.ПолучитьЗначение(НомерШиринаРезиновогоВала); КонецЕсли; спШиринаРезиновогоВала.ТекущаяСтрока(НомерШиринаРезиновогоВала); спШиринаВала2.ТекущаяСтрока(спШиринаВала2.НайтиЗначение(ШиринаРезиновогоВала)); КонецПроцедуры //------------------------------------------------------------------------------------------------------------ Процедура ПрочитатьФлажки() //флажки опереций фЭкструзия=Число(Сред(Флажки,1,1)); фПечать =Число(Сред(Флажки,2,1)); фЛаминация=Число(Сред(Флажки,3,1)); фБабинорезка =Число(Сред(Флажки,4,1)); фПакетоделание=Число(Сред(Флажки,5,1)); фФлексоформа =Число(Сред(Флажки,6,1)); //ф7 =Число(Сред(Флажки,7,1)); //ф8 =Число(Сред(Флажки,8,1)); фЕстьКлипсы =Число(Сред(Флажки,7,1)); фЕстьРасфасовка =Число(Сред(Флажки,8,1)); //флажки распечатки фНеобходимыеОперации=Число(Сред(Флажки,9,1)); фПараметрыГотовойПродукции=Число(Сред(Флажки,10,1)); фПараметрыИспользуемогоМатериала=Число(Сред(Флажки,11,1)); фОбъемСырья=Число(Сред(Флажки,12,1)); фЦеныПродукцииВкг=Число(Сред(Флажки,13,1)); фЦеныПродукцииВшт=Число(Сред(Флажки,14,1)); фТехнологическиеПараметры=Число(Сред(Флажки,15,1)); ф16=Число(Сред(Флажки,16,1)); //флажки технолога фРасположилиРисункиНаВалу=Число(Сред(Флажки,17,1)); фРучнойВводШириныРисунка=Число(Сред(Флажки,18,1)); фПодобралиРазвертки=Число(Сред(Флажки,19,1)); ф20=Число(Сред(Флажки,20,1)); ф21=Число(Сред(Флажки,21,1)); ф22=Число(Сред(Флажки,22,1)); ф23=Число(Сред(Флажки,23,1)); ф24=Число(Сред(Флажки,24,1)); //флажки экономиста ЧьяДоставка=Число(Сред(Флажки,25,1)); //КакСчитаем=Число(Сред(Флажки,26,1)); //РасчетСделан=Число(Сред(Флажки,27,1)); ф28=Число(Сред(Флажки,28,1)); ф29=Число(Сред(Флажки,29,1)); ф30=Число(Сред(Флажки,30,1)); ф31=Число(Сред(Флажки,31,1)); ф32=Число(Сред(Флажки,32,1)); КонецПроцедуры //------------------------------------------------------------------------------------------------------------ Процедура СоздатьСписокПечатныхМашин() спрПечатныеМашины=СоздатьОбъект("Справочник.ПечатныеМашины"); спрПечатныеМашины.ПорядокКодов(); спрПечатныеМашины.ВыбратьЭлементы(); Пока спрПечатныеМашины.ПолучитьЭлемент() = 1 Цикл спПечатныеМашины.ДобавитьЗначение(спрПечатныеМашины.ТекущийЭлемент(),спрПечатныеМашины.Наименование); КонецЦикла; КонецПроцедуры //------------------------------------------------------------------------------------------------------------ Функция ЗагрузитьТаблицыЭкструзииДляМатериала(Замес,СлойностьЗамеса,ПроцентСлоя1,ПроцентСлоя2,ПроцентСлоя3, тбСырье1,тбСырье2,тбСырье3,тбКраситель1,тбКраситель2,тбКраситель3,тбДобавки1,тбДобавки2,тбДобавки3) ТаблицаЗамеса=СоздатьОбъект("ТаблицаЗначений"); ТаблицаЗамеса.НоваяКолонка("СлойностьЗамеса","Число",2,0); ТаблицаЗамеса.НоваяКолонка("ПроцентСлоя1","Число",19,5); ТаблицаЗамеса.НоваяКолонка("ПроцентСлоя2","Число",19,5); ТаблицаЗамеса.НоваяКолонка("ПроцентСлоя3","Число",19,5); ТаблицаЗамеса.НоваяКолонка("тбСырье1"); ТаблицаЗамеса.НоваяКолонка("тбСырье2"); ТаблицаЗамеса.НоваяКолонка("тбСырье3"); ТаблицаЗамеса.НоваяКолонка("тбКраситель1"); ТаблицаЗамеса.НоваяКолонка("тбКраситель2"); ТаблицаЗамеса.НоваяКолонка("тбКраситель3"); ТаблицаЗамеса.НоваяКолонка("тбДобавки1"); ТаблицаЗамеса.НоваяКолонка("тбДобавки2"); ТаблицаЗамеса.НоваяКолонка("тбДобавки3"); Если ПустоеЗначение(Замес)=1 Тогда Возврат 0; Иначе ТаблицаЗамеса.Загрузить(ЗначениеИзСтроки(Замес)); КонецЕсли; ТаблицаЗамеса.ВыбратьСтроки(); Если ТаблицаЗамеса.ПолучитьСтроку()=1 Тогда СлойностьЗамеса=ТаблицаЗамеса.СлойностьЗамеса; ПроцентСлоя1=ТаблицаЗамеса.ПроцентСлоя1; ПроцентСлоя2=ТаблицаЗамеса.ПроцентСлоя2; ПроцентСлоя3=ТаблицаЗамеса.ПроцентСлоя3; Если ПустоеЗначение(ТаблицаЗамеса.тбСырье1)=0 Тогда тбСырье1.Загрузить(ТаблицаЗамеса.тбСырье1); КонецЕсли; Если ПустоеЗначение(ТаблицаЗамеса.тбСырье2)=0 Тогда тбСырье2.Загрузить(ТаблицаЗамеса.тбСырье2); КонецЕсли; Если ПустоеЗначение(ТаблицаЗамеса.тбСырье3)=0 Тогда тбСырье3.Загрузить(ТаблицаЗамеса.тбСырье3); КонецЕсли; Если ПустоеЗначение(ТаблицаЗамеса.тбКраситель1)=0 Тогда тбКраситель1.Загрузить(ТаблицаЗамеса.тбКраситель1); КонецЕсли; Если ПустоеЗначение(ТаблицаЗамеса.тбКраситель2)=0 Тогда тбКраситель2.Загрузить(ТаблицаЗамеса.тбКраситель2); КонецЕсли; Если ПустоеЗначение(ТаблицаЗамеса.тбКраситель3)=0 Тогда тбКраситель3.Загрузить(ТаблицаЗамеса.тбКраситель3); КонецЕсли; Если ПустоеЗначение(ТаблицаЗамеса.тбДобавки1)=0 Тогда тбДобавки1.Загрузить(ТаблицаЗамеса.тбДобавки1); КонецЕсли; Если ПустоеЗначение(ТаблицаЗамеса.тбДобавки2)=0 Тогда тбДобавки2.Загрузить(ТаблицаЗамеса.тбДобавки2); КонецЕсли; Если ПустоеЗначение(ТаблицаЗамеса.тбДобавки3)=0 Тогда тбДобавки3.Загрузить(ТаблицаЗамеса.тбДобавки3); КонецЕсли; КонецЕсли; Возврат 1; КонецФункции //------------------------------------------------------------------------------------------------------------ Процедура ЗагрузитьПоКонтрагентуТаблицыМассыТаблицыОплаты(ЭлементТаблицыКонтрагентовРасчета,ТаблицаКонтрагентов) ЭлементыТаблицыМассыРасчетов=СоздатьОбъект("Справочник.ЭлементыТаблицыМассыРасчетов"); ЭлементыТаблицыОплатыРасчетов=СоздатьОбъект("Справочник.ЭлементыТаблицыОплатыРасчетов"); ТаблицаРасчетнаяМасса=ТаблицаКонтрагентов.тбРасчетнаяМасса; ТаблицаОплаты=ТаблицаКонтрагентов.тбОплаты; ЭлементыТаблицыМассыРасчетов.ИспользоватьВладельца(ЭлементТаблицыКонтрагентовРасчета); ЭлементыТаблицыМассыРасчетов.ВыбратьЭлементы(); Пока ЭлементыТаблицыМассыРасчетов.ПолучитьЭлемент()=1 Цикл Если ЭлементыТаблицыМассыРасчетов.ПометкаУдаления()=1 Тогда Продолжить; КонецЕсли; ТаблицаРасчетнаяМасса.НоваяСтрока(); ТаблицаРасчетнаяМасса.Тираж=ЭлементыТаблицыМассыРасчетов.Тираж; ТаблицаРасчетнаяМасса.Масса=ЭлементыТаблицыМассыРасчетов.Масса; ТаблицаРасчетнаяМасса.НормаОсновногоМатериала=ЭлементыТаблицыМассыРасчетов.НормаОсновногоМатериала; ТаблицаРасчетнаяМасса.НормаМатериалаЛаминации1=ЭлементыТаблицыМассыРасчетов.НормаМатериалаЛаминации1; ТаблицаРасчетнаяМасса.НормаМатериалаЛаминации2=ЭлементыТаблицыМассыРасчетов.НормаМатериалаЛаминации2; ТаблицаРасчетнаяМасса.Себистоимость=ЭлементыТаблицыМассыРасчетов.Себистоимость; ТаблицаРасчетнаяМасса.НеРентабельно=ЭлементыТаблицыМассыРасчетов.НеРентабельно; ТаблицаРасчетнаяМасса.Прибыльно=ЭлементыТаблицыМассыРасчетов.Прибыльно; ТаблицаРасчетнаяМасса.Премиально=ЭлементыТаблицыМассыРасчетов.Премиально; ТаблицаРасчетнаяМасса.ДопНакруткаНеРентабельно=ЭлементыТаблицыМассыРасчетов.ДопНакруткаНеРентабельно; ТаблицаРасчетнаяМасса.ДопНакруткаПрибыльно=ЭлементыТаблицыМассыРасчетов.ДопНакруткаПрибыльно; ТаблицаРасчетнаяМасса.ДопНакруткаПремиально=ЭлементыТаблицыМассыРасчетов.ДопНакруткаПремиально; ТаблицаРасчетнаяМасса.Кол_квМТиража=ЭлементыТаблицыМассыРасчетов.Кол_квМТиража; ТаблицаРасчетнаяМасса.КолПогонМетровТиража=ЭлементыТаблицыМассыРасчетов.КолПогонМетровТиража; ТаблицаРасчетнаяМасса.СтоимостьНеРентабельно=ЭлементыТаблицыМассыРасчетов.СтоимостьНеРентабельно; ТаблицаРасчетнаяМасса.СтоимостьОтсрочкиНеРентабельно=ЭлементыТаблицыМассыРасчетов.СтоимостьОтсрочкиНеРентабельно; ТаблицаРасчетнаяМасса.ПродСтоимостьНеРентабельно=ЭлементыТаблицыМассыРасчетов.ПродСтоимостьНеРентабельно; ТаблицаРасчетнаяМасса.СтоимостьПрибыльно=ЭлементыТаблицыМассыРасчетов.СтоимостьПрибыльно; ТаблицаРасчетнаяМасса.СтоимостьОтсрочкиПрибыльно=ЭлементыТаблицыМассыРасчетов.СтоимостьОтсрочкиПрибыльно; ТаблицаРасчетнаяМасса.ПродСтоимостьПрибыльно=ЭлементыТаблицыМассыРасчетов.ПродСтоимостьПрибыльно; ТаблицаРасчетнаяМасса.СтоимостьПремиально=ЭлементыТаблицыМассыРасчетов.СтоимостьПремиально; ТаблицаРасчетнаяМасса.СтоимостьОтсрочкиПремиально=ЭлементыТаблицыМассыРасчетов.СтоимостьОтсрочкиПремиально; ТаблицаРасчетнаяМасса.ПродСтоимостьПремиально=ЭлементыТаблицыМассыРасчетов.ПродСтоимостьПремиально; КонецЦикла; ЭлементыТаблицыОплатыРасчетов.ИспользоватьВладельца(ЭлементТаблицыКонтрагентовРасчета); ЭлементыТаблицыОплатыРасчетов.ВыбратьЭлементы(); Пока ЭлементыТаблицыОплатыРасчетов.ПолучитьЭлемент()=1 Цикл ТаблицаОплаты.НоваяСтрока(); ТаблицаОплаты.Процент=ЭлементыТаблицыОплатыРасчетов.Процент; ТаблицаОплаты.КвоДней=ЭлементыТаблицыОплатыРасчетов.КвоДней; КонецЦикла; ТаблицаКонтрагентов.тбРасчетнаяМасса=ТаблицаРасчетнаяМасса; ТаблицаКонтрагентов.тбОплаты=ТаблицаОплаты; КонецПроцедуры //============================================================== Процедура КопироватьТаблицыКонтрагентовИСвязанныеСНими(спрТаблицаКонтрагентовРасчета,Обнулять=0) ЭлементыТаблицыКонтрагентовРасчетов=СоздатьОбъект("Справочник.ЭлементыТаблицыКонтрагентовРасчетов"); ЭлементыТаблицыМассыРасчетов=СоздатьОбъект("Справочник.ЭлементыТаблицыМассыРасчетов"); ЭлементыТаблицыОплатыРасчетов=СоздатьОбъект("Справочник.ЭлементыТаблицыОплатыРасчетов"); тбКонтрагенты.УдалитьСтроки(); ЭлементыТаблицыКонтрагентовРасчетов.ИспользоватьВладельца(спрТаблицаКонтрагентовРасчета); ЭлементыТаблицыКонтрагентовРасчетов.ВыбратьЭлементы(); Пока ЭлементыТаблицыКонтрагентовРасчетов.ПолучитьЭлемент()=1 Цикл спрЭлементТаблицыКонтрагентовРасчета= ЭлементыТаблицыКонтрагентовРасчетов.ТекущийЭлемент(); тбКонтрагенты.НоваяСтрока(); ВыбранКонтрагент=спрЭлементТаблицыКонтрагентовРасчета.Контрагент; Если ВыбранКонтрагент.Вид()="Заказчики" Тогда ВыбранКонтрагент=глСоздатьКонтрагентаИзЗаказчика(ВыбранКонтрагент); КонецЕсли; СоздатьЭлементыТаблицыКонтрагентов(ВыбранКонтрагент,тбКонтрагенты); тбКонтрагенты.Менеджер=спрЭлементТаблицыКонтрагентовРасчета.Менеджер; Если ПустоеЗначение(тбКонтрагенты.Менеджер)=1 Тогда тбКонтрагенты.Менеджер=Менеджер; КонецЕсли; тбКонтрагенты.КоефициентОтОбщегоЗаказа=ЭлементыТаблицыКонтрагентовРасчетов.КоефициентОтОбщегоЗаказа; Если тбКонтрагенты.Контрагент.НестандартныеЧислаВДокументах.Получить(ДатаДляЭкономистов)=1 Тогда НестандартныеЧислаВДокументах=1; КонецЕсли; тбКонтрагенты.Оплата1=ЭлементыТаблицыКонтрагентовРасчетов.Оплата1; тбКонтрагенты.Оплата2=ЭлементыТаблицыКонтрагентовРасчетов.Оплата2; тбКонтрагенты.Безнал=ЭлементыТаблицыКонтрагентовРасчетов.Безнал; тбКонтрагенты.Нал=ЭлементыТаблицыКонтрагентовРасчетов.Нал; тбКонтрагенты.ЧьяДоставка=ЭлементыТаблицыКонтрагентовРасчетов.ЧьяДоставка; тбКонтрагенты.ВыборДоставки=ЭлементыТаблицыКонтрагентовРасчетов.ВыборДоставки; Если Обнулять=1 Тогда тбКонтрагенты.фДругаяСтоимостьФорм=0; тбКонтрагенты.СебистоимостьПечатныхФорм=0; тбКонтрагенты.ПродажнаяСтоимостьФорм=0; тбКонтрагенты.УстановленныйОбъем=0; тбКонтрагенты.НестандартныйОбъем=0; тбКонтрагенты.УстановленнаяЦенаБезФорм=0; тбКонтрагенты.УстановленнаяЦена=0; тбКонтрагенты.Откат=0; тбКонтрагенты.УстановленнаяЦенаПоДокументам=0; тбКонтрагенты.РентабельностьЗаказа=0; тбКонтрагенты.ЗаказВакиля=0; Иначе тбКонтрагенты.фДругаяСтоимостьФорм=ЭлементыТаблицыКонтрагентовРасчетов.фДругаяСтоимостьФорм; тбКонтрагенты.СебистоимостьПечатныхФорм=ЭлементыТаблицыКонтрагентовРасчетов.СебистоимостьПечатныхФорм; тбКонтрагенты.ПродажнаяСтоимостьФорм=ЭлементыТаблицыКонтрагентовРасчетов.ПродажнаяСтоимостьФорм; тбКонтрагенты.УстановленныйОбъем=ЭлементыТаблицыКонтрагентовРасчетов.УстановленныйОбъем; тбКонтрагенты.НестандартныйОбъем=ЭлементыТаблицыКонтрагентовРасчетов.НестандартныйОбъем; тбКонтрагенты.УстановленнаяЦенаБезФорм=ЭлементыТаблицыКонтрагентовРасчетов.УстановленнаяЦенаБезФорм; тбКонтрагенты.УстановленнаяЦена=ЭлементыТаблицыКонтрагентовРасчетов.УстановленнаяЦена; тбКонтрагенты.Откат=ЭлементыТаблицыКонтрагентовРасчетов.Откат; тбКонтрагенты.УстановленнаяЦенаПоДокументам=ЭлементыТаблицыКонтрагентовРасчетов.УстановленнаяЦенаПоДокументам; тбКонтрагенты.РентабельностьЗаказа=0; тбКонтрагенты.ЗаказВакиля=ЭлементыТаблицыКонтрагентовРасчетов.ЗаказВакиля; КонецЕсли; ЗагрузитьПоКонтрагентуТаблицыМассыТаблицыОплаты(спрЭлементТаблицыКонтрагентовРасчета,тбКонтрагенты) ; КонецЦикла; Если тбКонтрагенты.КоличествоСтрок()=1 Тогда Контрагент1=тбКонтрагенты.ПолучитьЗначение(1,"Контрагент"); СтарыйТекЗаказчик=Контрагент1; КонецЕсли; КонецПроцедуры // //====================================================================== Процедура ЗагрузитьТаблицыКонтрагентовИСвязанныеСНими(спрТаблицаКонтрагентовРасчета) ЭлементыТаблицыКонтрагентовРасчетов=СоздатьОбъект("Справочник.ЭлементыТаблицыКонтрагентовРасчетов"); ЭлементыТаблицыМассыРасчетов=СоздатьОбъект("Справочник.ЭлементыТаблицыМассыРасчетов"); ЭлементыТаблицыОплатыРасчетов=СоздатьОбъект("Справочник.ЭлементыТаблицыОплатыРасчетов"); тбКонтрагенты.УдалитьСтроки(); ЭлементыТаблицыКонтрагентовРасчетов.ИспользоватьВладельца(спрТаблицаКонтрагентовРасчета); ЭлементыТаблицыКонтрагентовРасчетов.ВыбратьЭлементы(); Пока ЭлементыТаблицыКонтрагентовРасчетов.ПолучитьЭлемент()=1 Цикл спрЭлементТаблицыКонтрагентовРасчета= ЭлементыТаблицыКонтрагентовРасчетов.ТекущийЭлемент(); тбКонтрагенты.НоваяСтрока(); ВыбранКонтрагент=спрЭлементТаблицыКонтрагентовРасчета.Контрагент; Если ВыбранКонтрагент.Вид()="Заказчики" Тогда ВыбранКонтрагент=глСоздатьКонтрагентаИзЗаказчика(ВыбранКонтрагент); КонецЕсли; СоздатьЭлементыТаблицыКонтрагентов(ВыбранКонтрагент,тбКонтрагенты); тбКонтрагенты.Менеджер=спрЭлементТаблицыКонтрагентовРасчета.Менеджер; Если ПустоеЗначение(тбКонтрагенты.Менеджер)=1 Тогда тбКонтрагенты.Менеджер=Менеджер; КонецЕсли; тбКонтрагенты.КоефициентОтОбщегоЗаказа=ЭлементыТаблицыКонтрагентовРасчетов.КоефициентОтОбщегоЗаказа; Если тбКонтрагенты.Контрагент.НестандартныеЧислаВДокументах.Получить(ДатаДляЭкономистов)=1 Тогда НестандартныеЧислаВДокументах=1; КонецЕсли; тбКонтрагенты.Оплата1=ЭлементыТаблицыКонтрагентовРасчетов.Оплата1; тбКонтрагенты.Оплата2=ЭлементыТаблицыКонтрагентовРасчетов.Оплата2; тбКонтрагенты.Безнал=ЭлементыТаблицыКонтрагентовРасчетов.Безнал; тбКонтрагенты.Нал=ЭлементыТаблицыКонтрагентовРасчетов.Нал; тбКонтрагенты.ЧьяДоставка=ЭлементыТаблицыКонтрагентовРасчетов.ЧьяДоставка; тбКонтрагенты.ВыборДоставки=ЭлементыТаблицыКонтрагентовРасчетов.ВыборДоставки; тбКонтрагенты.фДругаяСтоимостьФорм=ЭлементыТаблицыКонтрагентовРасчетов.фДругаяСтоимостьФорм; тбКонтрагенты.СебистоимостьПечатныхФорм=ЭлементыТаблицыКонтрагентовРасчетов.СебистоимостьПечатныхФорм; тбКонтрагенты.ПродажнаяСтоимостьФорм=ЭлементыТаблицыКонтрагентовРасчетов.ПродажнаяСтоимостьФорм; тбКонтрагенты.УстановленныйОбъем=ЭлементыТаблицыКонтрагентовРасчетов.УстановленныйОбъем; тбКонтрагенты.НестандартныйОбъем=ЭлементыТаблицыКонтрагентовРасчетов.НестандартныйОбъем; тбКонтрагенты.УстановленнаяЦенаБезФорм=ЭлементыТаблицыКонтрагентовРасчетов.УстановленнаяЦенаБезФорм; тбКонтрагенты.УстановленнаяЦена=ЭлементыТаблицыКонтрагентовРасчетов.УстановленнаяЦена; тбКонтрагенты.Откат=ЭлементыТаблицыКонтрагентовРасчетов.Откат; тбКонтрагенты.УстановленнаяЦенаПоДокументам=ЭлементыТаблицыКонтрагентовРасчетов.УстановленнаяЦенаПоДокументам; тбКонтрагенты.РентабельностьЗаказа=ЭлементыТаблицыКонтрагентовРасчетов.РентабельностьЗаказа; тбКонтрагенты.ЗаказВакиля=ЭлементыТаблицыКонтрагентовРасчетов.ЗаказВакиля; ЗагрузитьПоКонтрагентуТаблицыМассыТаблицыОплаты(спрЭлементТаблицыКонтрагентовРасчета,тбКонтрагенты) ; КонецЦикла; Если тбКонтрагенты.КоличествоСтрок()=1 Тогда Контрагент1=тбКонтрагенты.ПолучитьЗначение(1,"Контрагент"); СтарыйТекЗаказчик=Контрагент1; КонецЕсли; КонецПроцедуры //------------------------------------------------------------------------------------------------------------ Функция ЗагрузитьТаблицуКрасокДизайна(спрТаблицаКрасок,ТаблицаКрасок,ОбнулитьФормы=0) Если ПустоеЗначение(спрТаблицаКрасок)=1 Тогда Возврат ТаблицаКрасок; КонецЕсли; Если спрТаблицаКрасок.Вид()="ОбщиеТаблицыКрасокРасчетов" Тогда ЭлементыТаблицыКрасок=СоздатьОбъект("Справочник.ЭлементыОбщейТаблицыКрасокРасчета"); Иначе ЭлементыТаблицыКрасок=СоздатьОбъект("Справочник.ЭлементыТаблицыКрасокДизайнов"); КонецЕсли; списокАнилоксов=ВернутьАнилоксы(ПечатнаяМашина); ЭлементыТаблицыКрасок.ИспользоватьВладельца(спрТаблицаКрасок); ЭлементыТаблицыКрасок.ВыбратьЭлементы(); Пока ЭлементыТаблицыКрасок.ПолучитьЭлемент()=1 Цикл Если ЭлементыТаблицыКрасок.ПометкаУдаления()=1 Тогда Продолжить; КонецЕсли; ТаблицаКрасок.НоваяСтрока(); Краска=ЭлементыТаблицыКрасок.Краска; ТаблицаКрасок.Краска=Краска; ТаблицаКрасок.ПроцентЗапечатки=ЭлементыТаблицыКрасок.ПроцентЗапечатки; Если ОбнулитьФормы=1 Тогда ТаблицаКрасок.КвоФотоФорм=0; Иначе ТаблицаКрасок.КвоФотоФорм=ЭлементыТаблицыКрасок.КолФотоФорм; КонецЕсли; ТаблицаКрасок.ПроцентСвязующего=ЭлементыТаблицыКрасок.ПроцентСвязующего; Анилокс=ЭлементыТаблицыКрасок.Анилокс; Если ПустоеЗначение(Анилокс)=0 Тогда Если Анилокс.Владелец<>ПечатнаяМашина Тогда СтараяЛинеатура=Анилокс.Линеатура; Анилокс=ПодборАнилокса(списокАнилоксов,СтараяЛинеатура); КонецЕсли; КонецЕсли; ТаблицаКрасок.Анилокс=Анилокс; КонецЦикла; Возврат ТаблицаКрасок; КонецФункции //============================================================== Процедура ЗагрузитьОбщуюРасчетнуюТаблицу(спрОбщаяТаблицаМассыРасчета) ЭлементыОбщейТаблицыМассыРасчетов=СоздатьОбъект("Справочник.ЭлементыОбщейТаблицыМассыРасчетов"); ЭлементыОбщейТаблицыМассыРасчетов.ИспользоватьВладельца(спрОбщаяТаблицаМассыРасчета); ЭлементыОбщейТаблицыМассыРасчетов.ВыбратьЭлементы(); Пока ЭлементыОбщейТаблицыМассыРасчетов.ПолучитьЭлемент()=1 Цикл Если ЭлементыОбщейТаблицыМассыРасчетов.ПометкаУдаления()=1 Тогда Продолжить; КонецЕсли; ОбщаяРасчетнаяТаблица.НоваяСтрока(); ОбщаяРасчетнаяТаблица.Тираж=ЭлементыОбщейТаблицыМассыРасчетов.Тираж; ОбщаяРасчетнаяТаблица.Масса=ЭлементыОбщейТаблицыМассыРасчетов.Масса; ОбщаяРасчетнаяТаблица.НормаОсновногоМатериала=ЭлементыОбщейТаблицыМассыРасчетов.НормаОсновногоМатериала; ОбщаяРасчетнаяТаблица.НормаМатериалаЛаминации1=ЭлементыОбщейТаблицыМассыРасчетов.НормаМатериалаЛаминации1; ОбщаяРасчетнаяТаблица.НормаМатериалаЛаминации2=ЭлементыОбщейТаблицыМассыРасчетов.НормаМатериалаЛаминации2; ОбщаяРасчетнаяТаблица.Себистоимость=ЭлементыОбщейТаблицыМассыРасчетов.Себистоимость; ОбщаяРасчетнаяТаблица.НеРентабельно=ЭлементыОбщейТаблицыМассыРасчетов.НеРентабельно; ОбщаяРасчетнаяТаблица.Прибыльно=ЭлементыОбщейТаблицыМассыРасчетов.Прибыльно; ОбщаяРасчетнаяТаблица.Премиально=ЭлементыОбщейТаблицыМассыРасчетов.Премиально; ОбщаяРасчетнаяТаблица.ДопНакруткаНеРентабельно=ЭлементыОбщейТаблицыМассыРасчетов.ДопНакруткаНеРентабельно; ОбщаяРасчетнаяТаблица.ДопНакруткаПрибыльно=ЭлементыОбщейТаблицыМассыРасчетов.ДопНакруткаПрибыльно; ОбщаяРасчетнаяТаблица.ДопНакруткаПремиально=ЭлементыОбщейТаблицыМассыРасчетов.ДопНакруткаПремиально; ОбщаяРасчетнаяТаблица.Кол_квМТиража=ЭлементыОбщейТаблицыМассыРасчетов.Кол_квМТиража; ОбщаяРасчетнаяТаблица.КолПогонМетровТиража=ЭлементыОбщейТаблицыМассыРасчетов.КолПогонМетровТиража; ОбщаяРасчетнаяТаблица.СтоимостьНеРентабельно=ЭлементыОбщейТаблицыМассыРасчетов.СтоимостьНеРентабельно; ОбщаяРасчетнаяТаблица.СтоимостьОтсрочкиНеРентабельно=ЭлементыОбщейТаблицыМассыРасчетов.СтоимостьОтсрочкиНеРентабельно; ОбщаяРасчетнаяТаблица.ПродСтоимостьНеРентабельно=ЭлементыОбщейТаблицыМассыРасчетов.ПродСтоимостьНеРентабельно; ОбщаяРасчетнаяТаблица.СтоимостьПрибыльно=ЭлементыОбщейТаблицыМассыРасчетов.СтоимостьПрибыльно; ОбщаяРасчетнаяТаблица.СтоимостьОтсрочкиПрибыльно=ЭлементыОбщейТаблицыМассыРасчетов.СтоимостьОтсрочкиПрибыльно; ОбщаяРасчетнаяТаблица.ПродСтоимостьПрибыльно=ЭлементыОбщейТаблицыМассыРасчетов.ПродСтоимостьПрибыльно; ОбщаяРасчетнаяТаблица.СтоимостьПремиально=ЭлементыОбщейТаблицыМассыРасчетов.СтоимостьПремиально; ОбщаяРасчетнаяТаблица.СтоимостьОтсрочкиПремиально=ЭлементыОбщейТаблицыМассыРасчетов.СтоимостьОтсрочкиПремиально; ОбщаяРасчетнаяТаблица.ПродСтоимостьПремиально=ЭлементыОбщейТаблицыМассыРасчетов.ПродСтоимостьПремиально; КонецЦикла; КонецПроцедуры //------------------------------------------------------------------------------------------------------------ Процедура СоздатьТаблицуРасположенияДизайновНаВалу() Если КвоДорожекНаВалу=0 Тогда Возврат; КонецЕсли; КвоДорожек=0; //Если фПакетоделание=1 Тогда // КвоДорожек=КвоДорожекНаВалу*2; //Иначе КвоДорожек=КвоДорожекНаВалу; //КонецЕсли; Если БольшаяТаблицаРасположенияДизайновНаВалу.КоличествоКолонок()=КвоДорожек Тогда Возврат; КонецЕсли; Если БольшаяТаблицаРасположенияДизайновНаВалу.КоличествоКолонок()>КвоДорожек Тогда Пока 1=1 Цикл БольшаяТаблицаРасположенияДизайновНаВалу.УдалитьКолонку(КвоДорожек+1); Если БольшаяТаблицаРасположенияДизайновНаВалу.КоличествоКолонок()<=КвоДорожек Тогда Прервать; КонецЕсли; КонецЦикла; Иначе Для ы=1 По КвоДорожек Цикл Идентификатор="D"+ы; Заголовок="Д-жка"+ы; Если БольшаяТаблицаРасположенияДизайновНаВалу.КоличествоКолонок()>=ы Тогда Продолжить; КонецЕсли; БольшаяТаблицаРасположенияДизайновНаВалу.НоваяКолонка(Идентификатор,,,,Заголовок); КонецЦикла; КонецЕсли; КонецПроцедуры //------------------------------------------------------------------------------------------------------------ Процедура ЗагрузитьТаблицуРасположенияДизайновНаВалу() Если ПустоеЗначение(БольшаяТаблицаРасположенияДизайновНаВалуСтрокой)=1 Тогда СоздатьТаблицуРасположенияДизайновНаВалу(); КонецЕсли; БольшаяТаблицаРасположенияДизайновНаВалу.Загрузить(ЗначениеИзСтроки(БольшаяТаблицаРасположенияДизайновНаВалуСтрокой)); КонецПроцедуры //------------------------------------------------------------------------------------------------------------ Процедура СохранитьТаблицуРасположенияДизайновНаВалу() БольшаяТаблицаРасположенияДизайновНаВалуСтрокой=ЗначениеВСтроку(БольшаяТаблицаРасположенияДизайновНаВалу); КонецПроцедуры //------------------------------------------------------------------------------------------------------------ Процедура СохранитьПредАтрибутыИТаблицы(ТаблицаКонтрагентов) Если тбКонтрагенты.КоличествоСтрок()=0 Тогда Возврат; КонецЕсли; ТаблицаРасчетнаяМасса=СоздатьОбъект("ТаблицаЗначений"); ТаблицаОплаты=СоздатьОбъект("ТаблицаЗначений"); ТаблицаОплаты.Загрузить(тбОплаты); ТаблицаКонтрагентов.УстановитьЗначение(ТекСтрокатбКонтрагенты,"Оплата1",Оплата1); ТаблицаКонтрагентов.УстановитьЗначение(ТекСтрокатбКонтрагенты,"Оплата2",Оплата2); ТаблицаКонтрагентов.УстановитьЗначение(ТекСтрокатбКонтрагенты,"тбОплаты",ТаблицаОплаты); ТаблицаКонтрагентов.УстановитьЗначение(ТекСтрокатбКонтрагенты,"Безнал",Безнал); ТаблицаКонтрагентов.УстановитьЗначение(ТекСтрокатбКонтрагенты,"Нал",Нал); ЧьяДоставка=спДоставка.ПолучитьЗначение(спДоставка.ТекущаяСтрока()); ТаблицаКонтрагентов.УстановитьЗначение(ТекСтрокатбКонтрагенты,"ЧьяДоставка",ЧьяДоставка); ТаблицаКонтрагентов.УстановитьЗначение(ТекСтрокатбКонтрагенты,"ВыборДоставки",ВыборДоставки); //Если тбКонтрагенты.КоличествоСтрок()>1 Тогда //Иначе // ТаблицаКонтрагентов.УстановитьЗначение(ТекСтрокатбКонтрагенты,"ПродажнаяСтоимостьФорм",ПродажнаяСтоимостьФорм); // ТаблицаКонтрагентов.УстановитьЗначение(ТекСтрокатбКонтрагенты,"УстановленнаяЦенаБезФорм",УстановленнаяЦенаБезФорм); // ТаблицаКонтрагентов.УстановитьЗначение(ТекСтрокатбКонтрагенты,"УстановленнаяЦена",УстановленнаяЦена); // ТаблицаКонтрагентов.УстановитьЗначение(ТекСтрокатбКонтрагенты,"Откат",Откат); // ТаблицаКонтрагентов.УстановитьЗначение(ТекСтрокатбКонтрагенты,"УстановленнаяЦенаПоДокументам",УстановленнаяЦенаПоДокументам); // ТаблицаКонтрагентов.УстановитьЗначение(ТекСтрокатбКонтрагенты,"НестандартныйОбъем",НестандартОбъем); //КонецЕсли; ТаблицаКонтрагентов.УстановитьЗначение(ТекСтрокатбКонтрагенты,"ЗаказВакиля",Заказ); КонецПроцедуры //------------------------------------------------------------------------------------------------------------ Процедура ОбновитьВидимыеАтрибутыИТаблицы(ТаблицаКонтрагентов) Если тбКонтрагенты.КоличествоСтрок()=0 Тогда Возврат; КонецЕсли; Оплата1=ТаблицаКонтрагентов.ПолучитьЗначение(ТекСтрокатбКонтрагенты,"Оплата1"); Оплата2=ТаблицаКонтрагентов.ПолучитьЗначение(ТекСтрокатбКонтрагенты,"Оплата2"); Безнал=ТаблицаКонтрагентов.ПолучитьЗначение(ТекСтрокатбКонтрагенты,"Безнал"); Нал=ТаблицаКонтрагентов.ПолучитьЗначение(ТекСтрокатбКонтрагенты,"Нал"); ЧьяДоставка=ТаблицаКонтрагентов.ПолучитьЗначение(ТекСтрокатбКонтрагенты,"ЧьяДоставка"); ВыборДоставки=ТаблицаКонтрагентов.ПолучитьЗначение(ТекСтрокатбКонтрагенты,"ВыборДоставки"); ТекСтр=?(спДоставка.НайтиЗначение(ЧьяДоставка)=0,1,спДоставка.НайтиЗначение(ЧьяДоставка)); спДоставка.ТекущаяСтрока(ТекСтр); тбОплаты.Загрузить(ТаблицаКонтрагентов.ПолучитьЗначение(ТекСтрокатбКонтрагенты,"тбОплаты")); ВыбранКонтрагент=тбКонтрагенты.ПолучитьЗначение(ТекСтрокатбКонтрагенты,"Контрагент"); //Если тбКонтрагенты.КоличествоСтрок()>1 Тогда //Иначе // СебистоимостьПечатныхФорм=ТаблицаКонтрагентов.ПолучитьЗначение(ТекСтрокатбКонтрагенты,"СебистоимостьПечатныхФорм"); // ПродажнаяСтоимостьФорм=ТаблицаКонтрагентов.ПолучитьЗначение(ТекСтрокатбКонтрагенты,"ПродажнаяСтоимостьФорм"); // УстановленнаяЦенаБезФорм=ТаблицаКонтрагентов.ПолучитьЗначение(ТекСтрокатбКонтрагенты,"УстановленнаяЦенаБезФорм"); // УстановленнаяЦена=ТаблицаКонтрагентов.ПолучитьЗначение(ТекСтрокатбКонтрагенты,"УстановленнаяЦена"); // // Откат=ТаблицаКонтрагентов.ПолучитьЗначение(ТекСтрокатбКонтрагенты,"Откат"); // УстановленнаяЦенаПоДокументам=ТаблицаКонтрагентов.ПолучитьЗначение(ТекСтрокатбКонтрагенты,"УстановленнаяЦенаПоДокументам"); // НестандартОбъем=ТаблицаКонтрагентов.ПолучитьЗначение(ТекСтрокатбКонтрагенты,"НестандартныйОбъем"); //КонецЕсли; Заказ=ТаблицаКонтрагентов.ПолучитьЗначение(ТекСтрокатбКонтрагенты,"ЗаказВакиля"); ТекЗаказчик=ТаблицаКонтрагентов.ПолучитьЗначение(ТекСтрокатбКонтрагенты,"Контрагент"); СтатусЗаказчика=ТекЗаказчик.Статус; Если СтатусЗаказчика=2 Тогда Если Оплата2=0 Тогда Форма.Оплата2.Доступность(0); КонецЕсли; Если тбОплаты.КоличествоСтрок()=0 Тогда Форма.Оплата2.Доступность(0); Форма.тбОплаты.Доступность(0); Форма.кнОплатыДобавить.Доступность(0); Форма.кнОплатыУдалить.Доступность(0); КонецЕсли; ИначеЕсли СтатусЗаказчика=1 Тогда Форма.Оплата2.Доступность(1); Если тбОплаты.КоличествоСтрок()=0 Тогда Форма.Оплата2.Доступность(0); Форма.тбОплаты.Доступность(0); Форма.кнОплатыДобавить.Доступность(0); Форма.кнОплатыУдалить.Доступность(0); КонецЕсли; Иначе Форма.Оплата2.Доступность(1); Форма.тбОплаты.Доступность(1); Форма.кнОплатыДобавить.Доступность(1); Форма.кнОплатыУдалить.Доступность(1); КонецЕсли; ОбновитьТаблицыДокумента(); КонецПроцедуры //------------------------------------------------------------------------------------------------------------ Процедура СохранитьПредТаблицуКрасокДизайна() ИТЗТехнолог = ПДИнТбТехнолог.Данные.ИндексированнаяТаблица; КоличествоСтрок=ИТЗТехнолог.КоличествоСтрок(); Если фЗапечаткаТекущДизайна=2 Тогда Если (ПустоеЗначение(ТекСтрокаТаблицаДизайновДляТехнолога)=1) ИЛИ(ТекСтрокаТаблицаДизайновДляТехнолога>КоличествоСтрок) Тогда Возврат;; КонецЕсли; ИТЗКраски = ПДИТКраски.Данные.ИндексированнаяТаблица; ТекущТаблицаКрасок=СоздатьОбъект("ИндексированнаяТаблица"); ИТЗКраски.Выгрузить(ТекущТаблицаКрасок); ТекДизайн=ИТЗТехнолог.ПолучитьЗначение(ТекСтрокаТаблицаДизайновДляТехнолога,"Дизайн"); Если ИТСтрокиДокумента.НомерИндекса("инДизайн")=0 Тогда ИТСтрокиДокумента.ДобавитьИндекс("инДизайн","Дизайн"); КонецЕсли; НомСтр=ИТСтрокиДокумента.НайтиСтроку("инДизайн", ТекДизайн); Если НомСтр<>0 Тогда ТаблицаКрасок=ИТСтрокиДокумента.ПолучитьЗначение(НомСтр,"ТаблицаКрасок"); Иначе Сообщить("Ошибка в СохранитьПредТаблицуКрасокДизайна"); Возврат ; КонецЕсли; ИТСтрокиДокумента.УстановитьЗначение(НомСтр,"ТаблицаКрасок",ТекущТаблицаКрасок); КонецЕсли; КонецПроцедуры //------------------------------------------------------------------------------------------------------------ Процедура ЗагрузитьТаблицы() Если Выбран()=1 Тогда СоздатьТаблицыКонтрагентов(тбКонтрагенты); ОбщиеТаблицыМассыРасчетов=СоздатьОбъект("Справочник.ОбщиеТаблицыМассыРасчетов"); Если ПустоеЗначение(ОбщаяТаблицаМассыРасчета)=1 Тогда ОбщиеТаблицыМассыРасчетов.НайтиПоРеквизиту("ДокументВладелец",ТекущийДокумент(),1); ОбщаяТаблицаМассыРасчета=ОбщиеТаблицыМассыРасчетов.ТекущийЭлемент(); КонецЕсли; ЗагрузитьОбщуюРасчетнуюТаблицу(ОбщаяТаблицаМассыРасчета); ТаблицыКонтрагентовРасчетов=СоздатьОбъект("Справочник.ТаблицыКонтрагентовРасчетов"); Если Контрагент.Вид()="ТаблицыКонтрагентовРасчетов" Тогда спрТаблицаКонтрагентовРасчета= Контрагент; Иначе ТаблицыКонтрагентовРасчетов.НайтиПоРеквизиту("ДокументВладелец",ТекущийДокумент(),1); спрТаблицаКонтрагентовРасчета= ТаблицыКонтрагентовРасчетов.ТекущийЭлемент(); КонецЕсли; ЗагрузитьТаблицыКонтрагентовИСвязанныеСНими(спрТаблицаКонтрагентовРасчета) ; Для ы=1 По тбКонтрагенты.КоличествоСтрок() Цикл ТаблицаРасчетнаяМассаОдногоЗаказчика=СоздатьОбъект("ТаблицаЗначений"); ТаблицаРасчетнаяМассаОдногоЗаказчика.Загрузить(тбКонтрагенты.ПолучитьЗначение(ы,"тбРасчетнаяМасса")); КвоСтрокОбъема=ОбщаяРасчетнаяТаблица.КоличествоСтрок(); Если ТаблицаРасчетнаяМассаОдногоЗаказчика.КоличествоСтрок()<КвоСтрокОбъема Тогда ТаблицаРасчетнаяМассаОдногоЗаказчика.КоличествоСтрок(КвоСтрокОбъема); КонецЕсли; тбКонтрагенты.УстановитьЗначение(ы,"тбРасчетнаяМасса",ТаблицаРасчетнаяМассаОдногоЗаказчика); КонецЦикла; КонецЕсли; ТекСтрокатбКонтрагенты=1; ОбновитьВидимыеАтрибутыИТаблицы(тбКонтрагенты); Если ИТСтрокиДокумента.КоличествоСтрок()=0 Тогда //еще не загрузили ВыбратьСтроки(); Пока ПолучитьСтроку() = 1 Цикл ИТСтрокиДокумента.НоваяСтрока(); ИТСтрокиДокумента.НомерСтрокиДокумента = НомерСтроки; ИТСтрокиДокумента.Код = СокрЛП(Дизайн.Код); ИТСтрокиДокумента.Дизайн = Дизайн; ИТСтрокиДокумента.ШагПечати = ШагПечати; ИТСтрокиДокумента.ШиринаДорожки = ШиринаДорожки; ИТСтрокиДокумента.ВысотаДизайна = ВысотаДизайна; ИТСтрокиДокумента.ШиринаДизайна = ШиринаДизайна; ИТСтрокиДокумента.КолДорожек = КолДорожек; ИТСтрокиДокумента.Вес1ТысячиПродукции = Вес1ТысячиПродукции; ИТСтрокиДокумента.БоковаяЗакладка = БоковаяЗакладка; ИТСтрокиДокумента.НижняяЗакладка = НижняяЗакладка; ИТСтрокиДокумента.ВерхняяЗакладка = ВерхняяЗакладка; ИТСтрокиДокумента.ДлинаДна = ДлинаДна; ИТСтрокиДокумента.ШиринаРучки = ШиринаРучки; ИТСтрокиДокумента.ДлинаРучки = ДлинаРучки; ИТСтрокиДокумента.ВесРучки = ВесРучки; ИТСтрокиДокумента.ТипПакета = ТипПакета; ИТСтрокиДокумента.ТипРучки = ТипРучки; ИТСтрокиДокумента.ЗамесРучки = ЗамесРучки; ИТСтрокиДокумента.СостояниеДизайна = СостояниеДизайна; ИТСтрокиДокумента.РисунокДизайна = РисунокДизайна; ИТСтрокиДокумента.РазверткаДизайна = РазверткаДизайна; ИТСтрокиДокумента.ВысотаФормы = ВысотаФормы; ИТСтрокиДокумента.ШиринаФормы = ШиринаФормы; ИТСтрокиДокумента.Заказчик = Заказчик; ИТСтрокиДокумента.КоэфДизайнаВЗаказе = КоэфДизайнаВЗаказе; ТаблицаКрасокДизайна=СоздатьОбъект("ИндексированнаяТаблица"); СоздатьТаблицуКрасок(ТаблицаКрасокДизайна); ЗагрузитьТаблицуКрасокДизайна(КраскиДизайна,ТаблицаКрасокДизайна,0); ИТСтрокиДокумента.ТаблицаКрасок=ТаблицаКрасокДизайна; ИТСтрокиДокумента.ВидНамотки=ВидНамотки; ИТСтрокиДокумента.ЕстьМетка=ЕстьМетка; ИТСтрокиДокумента.РасположениеМетки=РасположениеМетки; ИТСтрокиДокумента.РастояниеМеждуМетками=РастояниеМеждуМетками; ИТСтрокиДокумента.РастояниеОтРисункаДоМетки=РастояниеОтРисункаДоМетки; ИТСтрокиДокумента.ВысотаМетки=ВысотаМетки; ИТСтрокиДокумента.ШиринаМетки=ШиринаМетки; ИТСтрокиДокумента.ЕстьПоля=ЕстьПоля; ИТСтрокиДокумента.ПолеСправа=ПолеСправа; ИТСтрокиДокумента.ПолеСлева=ПолеСлева; ; КонецЦикла; КонецЕсли; сп=СоздатьОбъект("СписокЗначений"); КакиеСоздатьТаблицы=""; Если ПустоеЗначение(спДанныхЭкономистСтрСтрокой)=0 Тогда сп.УдалитьВсе(); сп=(ЗначениеИзСтроки(спДанныхЭкономистСтрСтрокой)); РазмерСписка=сп.РазмерСписка(); Если РазмерСписка=0 Тогда ИначеЕсли РазмерСписка<11 Тогда ОбьемДляЭкономистов=1000; КолКвМТиражаДляЭкономистов=0; КолПМТиражаДляЭкономистов=0; ОбщаяГрамматураПродукции=0; КакиеСоздатьТаблицы="Общая,Процессы,НакладныеЗатраты,ЗатратыКрасок,БракИЗатраты,Стоимость,СтоимостьБезКлише"; Иначе ОбьемДляЭкономистов=сп.ПолучитьЗначение(1); КолКвМТиражаДляЭкономистов=сп.ПолучитьЗначение(2); КолПМТиражаДляЭкономистов=сп.ПолучитьЗначение(3); ОбщаяГраматураПродукцииДляЭкономистов=сп.ПолучитьЗначение(4); тб= сп.ПолучитьЗначение(5); //Общая Если (ПустоеЗначение(тб)=0)И(ТипЗначенияСтр(тб)="ТаблицаЗначений") Тогда тбОбщая.Загрузить(тб); КонецЕсли; тб= сп.ПолучитьЗначение(6); Если (ПустоеЗначение(тб)=0)И(ТипЗначенияСтр(тб)="ТаблицаЗначений") Тогда тбПроцессы.Загрузить(тб); КонецЕсли; тб= сп.ПолучитьЗначение(7); Если (ПустоеЗначение(тб)=0)И(ТипЗначенияСтр(тб)="ТаблицаЗначений") Тогда тбНакладныеЗатраты.Загрузить(тб); КонецЕсли; тб= сп.ПолучитьЗначение(8); Если (ПустоеЗначение(тб)=0)И(ТипЗначенияСтр(тб)="ТаблицаЗначений") Тогда тбБракИЗатраты.Загрузить(тб); КонецЕсли; тб= сп.ПолучитьЗначение(9); Если (ПустоеЗначение(тб)=0)И(ТипЗначенияСтр(тб)="ТаблицаЗначений") Тогда тбЗатратыКрасок.Загрузить(тб); КонецЕсли; тб= сп.ПолучитьЗначение(10); Если (ПустоеЗначение(тб)=0)И(ТипЗначенияСтр(тб)="ТаблицаЗначений") Тогда тбСтоимость.Загрузить(тб); КонецЕсли; тб= сп.ПолучитьЗначение(11); Если (ПустоеЗначение(тб)=0)И(ТипЗначенияСтр(тб)="ТаблицаЗначений") Тогда тбСтоимостьБезКлише.Загрузить(тб); КонецЕсли; КонецЕсли; Иначе КакиеСоздатьТаблицы="Общая,Процессы,НакладныеЗатраты,ЗатратыКрасок,БракИЗатраты,Стоимость,СтоимостьБезКлише"; КонецЕсли; Если КакиеСоздатьТаблицы<>"" Тогда СоздатьТаблицыДляСтраницыЭкономистов(КакиеСоздатьТаблицы); КонецЕсли; ТекущаяТаблица.Загрузить(тбОбщая); спИстория.ДобавитьЗначение(тбОбщая); ТекПозицияВИстории=1; спЕдИзмДляЭкономистов.ДобавитьЗначение(0,"кг."); спЕдИзмДляЭкономистов.ДобавитьЗначение(1,"тис.шт."); ТекСтр=спЕдИзмДляЭкономистов.НайтиЗначение(ЕдИзмДляЭкономистов); Если ТекСтр=0 Тогда ЕдИзмДляЭкономистов=0; ТекСтр=спЕдИзмДляЭкономистов.НайтиЗначение(ЕдИзмДляЭкономистов); КонецЕсли; спЕдИзмДляЭкономистов.ТекущаяСтрока(ТекСтр); ТекСтр=спТипПоставкиПечать.НайтиЗначение(КоефНашегоОснМатериала); спТипПоставкиПечать.ТекущаяСтрока(ТекСтр); ТекСтр=спТипПоставкиЛаминат1.НайтиЗначение(КоефНашегоМатериалаЛаминации1); спТипПоставкиЛаминат1.ТекущаяСтрока(ТекСтр); ТекСтр=спТипПоставкиЛаминат2.НайтиЗначение(КоефНашегоМатериалаЛаминации2); спТипПоставкиЛаминат2.ТекущаяСтрока(ТекСтр); Если ПустоеЗначение(тбИсторияДокументаСтрокой)=0 Тогда тбИсторияДокумента.Загрузить(ЗначениеИзСтроки(тбИсторияДокументаСтрокой)); КонецЕсли; спНашиФирмы.ДобавитьЗначение(КоллекцияНашихФирм.ОЗУМ,КоллекцияНашихФирм.ОЗУМ.Наименование); спНашиФирмы.ДобавитьЗначение(КоллекцияНашихФирм.Никатор,КоллекцияНашихФирм.Никатор.Наименование); Если (НашаФирма<>КоллекцияНашихФирм.ОЗУМ)И(НашаФирма<>КоллекцияНашихФирм.Никатор) Тогда НашаФирма=КоллекцияНашихФирм.ОЗУМ; КонецЕсли; стр=спНашиФирмы.НайтиЗначение(НашаФирма); спНашиФирмы.ТекущаяСтрока(стр); СоздатьСписокВидовПленки(); КвоДорожекНаВалуКопия=КвоДорожекНаВалу; ЗагрузитьТаблицуРасположенияДизайновНаВалу(); Формат1=ШиринаСырьяОсновногоМатериала; Формат2 =ШиринаСырьяМатериалаЛаминации1; Формат3 =ШиринаСырьяМатериалаЛаминации2; //список фирм откуда будет отгружаться (нужно для префикса номера заказа) спрФирмы=СоздатьОбъект("Справочник.Фирмы"); спрФирмы.ПорядокКодов(); спрФирмы.ВыбратьЭлементы(); Пока спрФирмы.ПолучитьЭлемент()=1 Цикл СписокФирм.ДобавитьЗначение(спрФирмы.ТекущийЭлемент(),спрФирмы.Наименование); КонецЦикла; стр=СписокФирм.НайтиЗначение(Фирма); Если стр=0 Тогда стр=1; Фирма= СписокФирм.ПолучитьЗначение(стр); КонецЕсли; СписокФирм.ТекущаяСтрока(стр); Для НС=1 По тбКонтрагенты.КоличествоСтрок() Цикл ТекЗаказчик=тбКонтрагенты.ПолучитьЗначение(НС,"Контрагент"); УстановленнаяЦенаТекЗаказчика=тбКонтрагенты.ПолучитьЗначение(НС,"УстановленнаяЦена"); итСтарыеУстановленныеЦены.НоваяСтрока(); итСтарыеУстановленныеЦены.Контрагент = ТекЗаказчик; итСтарыеУстановленныеЦены.УстановленнаяЦена = УстановленнаяЦенаТекЗаказчика; КонецЦикла; КонецПроцедуры //------------------------------------------------------------------------------------------------------------ Процедура ЗагрузитьРисункиПодписей() глИзменитьРисунокПодписи(фПодписьТехнолога,картинаПодписьТехнолога); глИзменитьРисунокПодписи(фПодписьЛаминаторщика,картинаПодписьЛаминаторщика); глИзменитьРисунокПодписи(фПодписьЭкономиста,картинаПодписьЭкономиста); глИзменитьРисунокПодписи(фПодписьСогласованиеЦены,картинаПодписьСогласованиеЦены); КонецПроцедуры //====================================================================== Процедура ОбновитьФорму() ПрочитатьФлажки(); ЗагрузитьТаблицы(); ТекущаяМашина=спПечатныеМашины.НайтиЗначение(ПечатнаяМашина); Если ТекущаяМашина=0 Тогда ТекущаяМашина=1; КонецЕсли; спПечатныеМашины.ТекущаяСтрока(ТекущаяМашина); Если ПустоеЗначение(Валюта)=1 Тогда Валюта=Гривня; Курс=Валюта.Курс.Получить(ДатаДляЭкономистов); КонецЕсли; ЗаполнитьСпискиРасчитанныхОбъемов(); ОбщийРасходКрасокВкг= 0 ; тбКонтрагенты.ВидимостьКолонки("Договор",1); тбКонтрагенты.ВидимостьКолонки("Спецификация",1); тбКонтрагенты.ВидимостьКолонки("КоефициентОтОбщегоЗаказа",0); тбКонтрагенты.ВидимостьКолонки("тбРасчетнаяМасса",0); тбКонтрагенты.ВидимостьКолонки("Оплата1",0); тбКонтрагенты.ВидимостьКолонки("Оплата2",0); тбКонтрагенты.ВидимостьКолонки("тбОплаты",0); тбКонтрагенты.ВидимостьКолонки("Безнал",0); тбКонтрагенты.ВидимостьКолонки("Нал",0); тбКонтрагенты.ВидимостьКолонки("фДругаяСтоимостьФорм",0); тбКонтрагенты.ВидимостьКолонки("СебистоимостьПечатныхФорм",0); тбКонтрагенты.ВидимостьКолонки("ЧьяДоставка",0); тбКонтрагенты.ВидимостьКолонки("ВыборДоставки",0); тбКонтрагенты.ВидимостьКолонки("ПродажнаяСтоимостьФорм",0); тбКонтрагенты.ВидимостьКолонки("УстановленныйОбъем",0); тбКонтрагенты.ВидимостьКолонки("НестандартныйОбъем",0); тбКонтрагенты.ВидимостьКолонки("УстановленнаяЦенаБезФорм",0); тбКонтрагенты.ВидимостьКолонки("УстановленнаяЦена",0); тбКонтрагенты.ВидимостьКолонки("Откат",0); тбКонтрагенты.ВидимостьКолонки("УстановленнаяЦенаПоДокументам",0); тбКонтрагенты.ВидимостьКолонки("РентабельностьЗаказа",0); тбКонтрагенты.ВидимостьКолонки("ЗаказВакиля",0); тбКонтрагенты.УстановитьПараметрыКолонки("Контрагент","Справочник.Контрагенты",,,"Заказчик"); ЗагрузитьРисункиПодписей(); Если тбКонтрагенты.КоличествоСтрок()>1 Тогда //Форма.фПродукцияВсехЗаказчиков.Видимость(1); Форма.Контрагент1.Видимость(0); Форма.тбКонтрагенты.Видимость(1); Форма.кнДобавитьКонтрагент.Видимость(1); Форма.кнУдалитьКонтрагент.Видимость(1); Иначе Форма.Контрагент1.Видимость(1); Форма.тбКонтрагенты.Видимость(0); Форма.кнДобавитьКонтрагент.Видимость(0); Форма.кнУдалитьКонтрагент.Видимость(0); //Форма.фПродукцияВсехЗаказчиков.Видимость(0); КонецЕсли; Если ДавальческийВесОснМатериала=0 Тогда Заголовок="..."; Иначе Заголовок=""+ДавальческийВесОснМатериала; КонецЕсли; Форма.кЧастПоставкаОснМатериал.Заголовок(Заголовок); Если ДавальческийВесМатериалаЛаминации1=0 Тогда Заголовок="..."; Иначе Заголовок=""+ДавальческийВесМатериалаЛаминации1; КонецЕсли; Форма.кЧастПоставкаМатериалЛаминации1.Заголовок(Заголовок); Если ДавальческийВесМатериалаЛаминации2=0 Тогда Заголовок="..."; Иначе Заголовок=""+ДавальческийВесМатериалаЛаминации2; КонецЕсли; Форма.кЧастПоставкаМатериалЛаминации2.Заголовок(Заголовок); Форма.спШиринаРезиновогоВала.ВыполнятьФормулуТолькоПриИзменении(1); Форма.спШиринаВала2.ВыполнятьФормулуТолькоПриИзменении(1); ИзмНаличиеМакета(); НеСохранен=0; //Если (ОбщийПродажныйОбъем<>0)И (УстановленнаяЦена<>0) Тогда // Если УстановленнаяЦенаБезФорм=0 Тогда // УстановленнаяЦенаБезФорм=УстановленнаяЦена-ПродажнаяСтоимостьФорм/ОбщийПродажныйОбъем; // КонецЕсли; //КонецЕсли; ОбновитьВидимыеАтрибутыИТаблицы(тбКонтрагенты); ОбновитьТаблицыДокумента(); Форма.Обновить(0); КонецПроцедуры // ОбновитьФорму //------------------------------------------------------------------------------------------------------------ Процедура ПриОткрытии() Если Форма.ТолькоПросмотр()=1 Тогда Форма.кОК.Доступность(0); Форма.кЗаписать.Доступность(0); Форма.кПровести.Доступность(0); Форма.кРасчет.Доступность(0); Форма.КнопкаПоУмолчанию("кЗакрыть"); Иначе Форма.КнопкаПоУмолчанию("кОК"); КонецЕсли; ПриЗаписиПерепроводить(1); Форма.кСоздатьСчет.Доступность(0); фПодобралиРазвертки=0; ТекСтрокаТаблицаДизайновДляТехнолога=1; Форма.ОбьемДляЭкономистов.Доступность(1); Форма.кКопироватьКраски.Доступность(0); ЗагрузитьКонстантыИзРеквизитыСправочников(); СоздатьСписокПечатныхМашин(); СоздалиИЗаписалиНовыйЗаказ=0; //Если Тогда //КонецЕсли; Права=НазваниеНабораПрав(); Форма.ИспользоватьЗакладки(1); Форма.Закладки.ДобавитьЗначение("Менеджерский","Менеджер"); Форма.Закладки.ДобавитьЗначение("СопровождающиеДокументы","Сопровождающие Документы"); тДляМенеджера=""; Если (Права="Менеджер") Тогда Если (фПодписьМенеджера=1)Тогда ЗакрытьДоступМенеджеру=1; Иначе ЗакрытьДоступМенеджеру=0; КонецЕсли; КонецЕсли; Если (Права="Технолог")ИЛИ (Права="ТехнологНикатор") Тогда Форма.Закладки.ДобавитьЗначение("Ламинация","Ламинация"); Форма.Закладки.ДобавитьЗначение("Технологический","Технолог"); ИначеЕсли (Права="Ламинаторщик") Тогда Форма.Закладки.ДобавитьЗначение("Ламинация","Ламинация"); Форма.Закладки.ДобавитьЗначение("Технологический","Технолог"); ИначеЕсли (Права="Экономист") Тогда Форма.Закладки.ДобавитьЗначение("Ламинация","Ламинация"); Форма.Закладки.ДобавитьЗначение("Технологический","Технолог"); Форма.Закладки.ДобавитьЗначение("Экономистский","Экономист"); ИначеЕсли (Права="Руководитель") Тогда Форма.Закладки.ДобавитьЗначение("Ламинация","Ламинация"); Форма.Закладки.ДобавитьЗначение("Технологический","Технолог"); Форма.Закладки.ДобавитьЗначение("Экономистский","Экономист"); ИначеЕсли (Права="Администратор") Тогда Форма.Закладки.ДобавитьЗначение("Ламинация","Ламинация"); Форма.Закладки.ДобавитьЗначение("Технологический","Технолог"); Форма.Закладки.ДобавитьЗначение("Экономистский","Экономист"); ИначеЕсли (Права="SuperUser") Тогда Форма.Закладки.ДобавитьЗначение("Технологический","Технолог"); Форма.Закладки.ДобавитьЗначение("Экономистский","Экономист"); КонецЕсли; МестоВставки=0; КвоЗакладок=Форма.Закладки.РазмерСписка(); Если (Права="Менеджер") Тогда Если (фПодписьТехнолога=1)и(НашаФирма=КоллекцияНашихФирм.ОЗУМ) Тогда Если (КвоЗакладок=2)и(Права="Менеджер") Тогда МестоВставки=3; КонецЕсли; КонецЕсли; ИначеЕсли Найти("Руководитель,Экономист,Администратор",Права)<>0 Тогда НЗакДляЭкономистов=Форма.Закладки.НайтиЗначение("Экономистский"); Если НЗакДляЭкономистов<>0 Тогда МестоВставки=НЗакДляЭкономистов+1; КонецЕсли; КонецЕсли; Если ПустоеЗначение(МестоВставки)=0 Тогда Форма.Закладки.ВставитьЗначение(МестоВставки,"ПродажныеДанные","ПродажныеДанные"); КонецЕсли; Если Найти("Руководитель,Администратор",Права)=0 Тогда Форма.кнОтказВСогласованииЦены.Видимость(0); КонецЕсли; Если (ИмяПользователя()="zk96") Тогда Форма.Закладки.ДобавитьЗначение("Временный","Временный"); Форма.НомерДок.Доступность(1); Иначе Форма.НомерДок.Доступность(0); КонецЕсли; Форма.ПанельИнструментов(0); Форма.ИспользоватьСлой("Общий, Менеджерский",2); КакаяЗакладка="Менеджерский"; фПараметрыГотовойПродукции=1; фЦеныПродукцииВкг=1; фЦеныПродукцииВшт=1; Форма.Заголовок(Фирма,1); ПрочитатьФлажки(); РасширениеФормы=СоздатьОбъект("РасширениеФормы"); РасширениеФормы.УстановитьФорму(Форма); ШрифтЗаголовка=КоллекцияШрифтов.Шрифт("MS Sans Serif", 9, 1, 0, 0, 0); ШрифтСтрок=КоллекцияШрифтов.Шрифт("MS Sans Serif", 9, 0, 0, 0, 0); //ШрифтДляКнопокТолстый=КоллекцияШрифтов.СоздатьШрифт("MS Sans Serif",14, 7,0,0,0,0); //ШрифтДляКнопокТонкий=КоллекцияШрифтов.СоздатьШрифт("MS Sans Serif", 12, 1, 0, 0, 0); //ШрифтTimesNORMAL=КоллекцияШрифтов.СоздатьШрифт("Times New Roman",14, 4,0,0,0,0); //ШрифтTimesBOLD=КоллекцияШрифтов.СоздатьШрифт("Times New Roman",18, 7,0,0,0,0); ШрифтДляКнопокТолстый=глСервис.СоздатьШрифт("MS Sans Serif",14, 7,0,0,0,0); ШрифтДляКнопокТонкий=глСервис.СоздатьШрифт("MS Sans Serif", 12, 1, 0, 0, 0); ШрифтTimesNORMAL=глСервис.СоздатьШрифт("Times New Roman",14, 4,0,0,0,0); ШрифтTimesBOLD=глСервис.СоздатьШрифт("Times New Roman",18, 7,0,0,0,0); КонтекстФормы=глВернутьКонтекст(Контекст); НормыРасчета=СоздатьОбъект("Расчеты.РасчетНорм"); Если ОбщаяРасчетнаяТаблица.КоличествоСтрок()>0 Тогда МассаДляПереклейки=ОбщаяРасчетнаяТаблица.ПолучитьЗначение(1,"Масса"); ТиражДляПереклейки=ОбщаяРасчетнаяТаблица.ПолучитьЗначение(1,"Тираж"); Иначе МассаДляПереклейки=0; ТиражДляПереклейки=0; КонецЕсли; НормыРасчета.МассаДляПереклейки=МассаДляПереклейки; НормыРасчета.ТиражДляПереклейки=ТиражДляПереклейки; НормыРасчета.УстановитьДокумент(КонтекстФормы); НормыРасчета.РасчитатьВесТысячи(); РасчетСтоимости=СоздатьОбъект("Расчеты.РасчетСтоимости"); РасчетСтоимости.УстановитьДокумент(КонтекстФормы,НормыРасчета); фВидимыеКолонкиВТППродажа=1; ОбновитьФорму(); КонецПроцедуры //------------------------------------------------------------------------------------------------------------ Процедура КопироватьОбщуюТаблицаМассыРасчета(спрОбщаяТаблицаМассыРасчета,ВыбранОбъем=0) ОбщаяРасчетнаяТаблица.УдалитьСтроки(); Если (КакСчитаем<>СчитаемОтМассы)И(КакСчитаем<>СчитаемОтТиража) Тогда Возврат; КонецЕсли; ЭлементыОбщейТаблицыМассыРасчетов=СоздатьОбъект("Справочник.ЭлементыОбщейТаблицыМассыРасчетов"); ЭлементыОбщейТаблицыМассыРасчетов.ИспользоватьВладельца(спрОбщаяТаблицаМассыРасчета); ЭлементыОбщейТаблицыМассыРасчетов.ВыбратьЭлементы(); Пока ЭлементыОбщейТаблицыМассыРасчетов.ПолучитьЭлемент()=1 Цикл Если ЭлементыОбщейТаблицыМассыРасчетов.ПометкаУдаления()=1 Тогда Продолжить; КонецЕсли; Если КакСчитаем=СчитаемОтМассы Тогда ТекТираж=0; ТекМасса=ЭлементыОбщейТаблицыМассыРасчетов.Масса; Если ВыбранОбъем<>0 Тогда Если ТекМасса<>ВыбранОбъем Тогда Продолжить; КонецЕсли; КонецЕсли; ИначеЕсли КакСчитаем=СчитаемОтТиража Тогда ТекТираж=ЭлементыОбщейТаблицыМассыРасчетов.Тираж; ТекМасса=0; Если ВыбранОбъем<>0 Тогда Если ТекТираж<>ВыбранОбъем Тогда Продолжить; КонецЕсли; КонецЕсли; Иначе ТекТираж=0; ТекМасса=0; Если ВыбранОбъем<>0 Тогда Продолжить; КонецЕсли; КонецЕсли; ОбщаяРасчетнаяТаблица.НоваяСтрока(); ОбщаяРасчетнаяТаблица.Тираж=ТекТираж; ОбщаяРасчетнаяТаблица.Масса=ТекМасса; ОбщаяРасчетнаяТаблица.НормаОсновногоМатериала=0; ОбщаяРасчетнаяТаблица.НормаМатериалаЛаминации1=0; ОбщаяРасчетнаяТаблица.НормаМатериалаЛаминации2=0; ОбщаяРасчетнаяТаблица.Себистоимость=0; ОбщаяРасчетнаяТаблица.НеРентабельно=0; ОбщаяРасчетнаяТаблица.Прибыльно=0; ОбщаяРасчетнаяТаблица.Премиально=0; ОбщаяРасчетнаяТаблица.ДопНакруткаНеРентабельно=0; ОбщаяРасчетнаяТаблица.ДопНакруткаПрибыльно=0; ОбщаяРасчетнаяТаблица.ДопНакруткаПремиально=0; ОбщаяРасчетнаяТаблица.Кол_квМТиража=0; ОбщаяРасчетнаяТаблица.КолПогонМетровТиража=0; ОбщаяРасчетнаяТаблица.СтоимостьНеРентабельно=0; ОбщаяРасчетнаяТаблица.СтоимостьОтсрочкиНеРентабельно=0; ОбщаяРасчетнаяТаблица.ПродСтоимостьНеРентабельно=0; ОбщаяРасчетнаяТаблица.СтоимостьПрибыльно=0; ОбщаяРасчетнаяТаблица.СтоимостьОтсрочкиПрибыльно=0; ОбщаяРасчетнаяТаблица.ПродСтоимостьПрибыльно=0; ОбщаяРасчетнаяТаблица.СтоимостьПремиально=0; ОбщаяРасчетнаяТаблица.СтоимостьОтсрочкиПремиально=0; ОбщаяРасчетнаяТаблица.ПродСтоимостьПремиально=0; КонецЦикла; КонецПроцедуры //------------------------------------------------------------------------------------------- Функция ВернутьМатериалКлей() Возврат Константа.УсредненныйКлей; КонецФункции //------------------------------------------------------------------------------------------------------------ Процедура ВводНового(ПризнКопирования,ОбъектКопирования) СоздатьТаблицыКонтрагентов(тбКонтрагенты); Если ПризнКопирования = 1 Тогда ф1=Число(Сред(ОбъектКопирования.Флажки,1,1)); ф2 =Число(Сред(ОбъектКопирования.Флажки,2,1)); ф3=Число(Сред(ОбъектКопирования.Флажки,3,1)); ф4 =Число(Сред(ОбъектКопирования.Флажки,4,1)); ф5=Число(Сред(ОбъектКопирования.Флажки,5,1)); ф6 =Число(Сред(ОбъектКопирования.Флажки,6,1)); ф7 =Число(Сред(ОбъектКопирования.Флажки,7,1)); ф8 =Число(Сред(ОбъектКопирования.Флажки,8,1)); //флажки распечатки ф9=Число(Сред(ОбъектКопирования.Флажки,9,1)); ф10=Число(Сред(ОбъектКопирования.Флажки,10,1)); ф11=Число(Сред(ОбъектКопирования.Флажки,11,1)); ф12=Число(Сред(ОбъектКопирования.Флажки,12,1)); ф13=0; ф14=0; ф15=Число(Сред(ОбъектКопирования.Флажки,15,1)); ф16=Число(Сред(ОбъектКопирования.Флажки,16,1)); //флажки технолога ф17=Число(Сред(ОбъектКопирования.Флажки,17,1)); ф18=Число(Сред(ОбъектКопирования.Флажки,18,1)); ф19=Число(Сред(ОбъектКопирования.Флажки,19,1)); ф20=Число(Сред(ОбъектКопирования.Флажки,20,1)); ф21=Число(Сред(ОбъектКопирования.Флажки,21,1)); ф22=Число(Сред(ОбъектКопирования.Флажки,22,1)); ф23=Число(Сред(ОбъектКопирования.Флажки,23,1)); ф24=Число(Сред(ОбъектКопирования.Флажки,24,1)); //флажки экономиста ф25=Число(Сред(ОбъектКопирования.Флажки,25,1)); ф26=Число(Сред(ОбъектКопирования.Флажки,26,1)); ф27=0; //РасчетСделан ф28=Число(Сред(ОбъектКопирования.Флажки,28,1)); ф29=Число(Сред(ОбъектКопирования.Флажки,29,1)); ф30=Число(Сред(ОбъектКопирования.Флажки,30,1)); ф31=Число(Сред(ОбъектКопирования.Флажки,31,1)); ф32=Число(Сред(ОбъектКопирования.Флажки,32,1)); Флажки=""+ф1+ф2+ф3+ф4+ф5+ф6+ф7+ф8+ф9+ф10+ф11+ф12+ф13+ф14+ф15+ф16+ф17+ф18+ф19+ф20+ф21+ф22+ф23+ф24+ф25+ф26+ф27+ф28+ф29+ф30+ф31+ф32; спДанныхЭкономистСтрСтрокой=""; фПодписьМенеджера=0; ЗаполнилМенеджер=""; фПодписьТехнолога=0; ЗаполнилТехнолог=""; фПодписьЭкономиста=0; ЗаполнилЭкономист=""; фПодписьСогласованиеЦены=0; ЗаполнилСогласованиеЦены=""; РасчетСделан=0; КакСчитаем=ОбъектКопирования.КакСчитаем; КопироватьОбщуюТаблицаМассыРасчета(ОбъектКопирования.ОбщаяТаблицаМассыРасчета); КопироватьТаблицыКонтрагентовИСвязанныеСНими(ОбъектКопирования.Контрагент,1) ; КвоДорожекНаВалу=ОбъектКопирования.КвоДорожекНаВалу; ПечатнаяМашина=ОбъектКопирования.ПечатнаяМашина; КоличествоПереклеек =0; УдалитьСтроки(); ИТСтрокиДокумента.УдалитьСтроки(); ОбъектКопирования.ВыбратьСтроки(); Пока ОбъектКопирования.ПолучитьСтроку()=1 Цикл НоваяСтрока(); Дизайн=ОбъектКопирования.Дизайн; ШагПечати=ОбъектКопирования.ШагПечати; ШиринаДорожки=ОбъектКопирования.ШиринаДорожки; ВысотаДизайна=ОбъектКопирования.ВысотаДизайна; ШиринаДизайна=ОбъектКопирования.ШиринаДизайна; КолДорожек=ОбъектКопирования.КолДорожек; БоковаяЗакладка=ОбъектКопирования.БоковаяЗакладка; НижняяЗакладка=ОбъектКопирования.НижняяЗакладка; ВерхняяЗакладка=ОбъектКопирования.ВерхняяЗакладка; ШиринаРучки=ОбъектКопирования.ШиринаРучки; ДлинаРучки=ОбъектКопирования.ДлинаРучки; ВесРучки=ОбъектКопирования.ВесРучки; ТипПакета=ОбъектКопирования.ТипПакета; ТипРучки=ОбъектКопирования.ТипПакета; ЗамесРучки=ОбъектКопирования.ЗамесРучки; СостояниеДизайна=ОбъектКопирования.СостояниеДизайна; РисунокДизайна=ОбъектКопирования.РисунокДизайна; РазверткаДизайна=ОбъектКопирования.РазверткаДизайна; Заказчик=ОбъектКопирования.Заказчик; КраскиДизайна=""; КонецЦикла; НашаФирма=ОбъектКопирования.НашаФирма; Если (ПустоеЗначение(НашаФирма)=1) Тогда НашаФирма= КоллекцияНашихФирм.ОЗУМ; КонецЕсли; Если (НашаФирма<>КоллекцияНашихФирм.ОЗУМ)И(НашаФирма<>КоллекцияНашихФирм.Никатор) Тогда НашаФирма= КоллекцияНашихФирм.ОЗУМ; КонецЕсли; Если (НашаФирма=КоллекцияНашихФирм.Никатор)Тогда Фирма=Константа.ФирмаСторонняя; Иначе Фирма=Константа.ФирмаПродавец; КонецЕсли; Иначе КакСчитаем=0; Менеджер=глПолучитьИзПользователяСотрудника(); спрПечатныеМашины=СоздатьОбъект("Справочник.ПечатныеМашины"); спрПечатныеМашины.ПорядокКодов(); спрПечатныеМашины.ВыбратьЭлементы(); ПечатнаяМашина=спрПечатныеМашины.ТекущийЭлемент(); НомерВыбранРазвертки=1; ВыбранМашина=1; КоефНашегоОснМатериала=1;КоефНашегоМатериалаЛаминации1=1;КоефНашегоМатериалаЛаминации2=1; СлойностьЗамеса1=0; СлойностьЗамеса2=0; СлойностьЗамеса3=0; ЧьяДоставка=0; НаличиеМакета=Перечисление.ДаНет.Да ; Если ПустоеЗначение(Менеджер)=0 Тогда НашаФирма= Менеджер.НашаФирма; КонецЕсли; Если (ПустоеЗначение(НашаФирма)=1) Тогда НашаФирма= КоллекцияНашихФирм.ОЗУМ; КонецЕсли; Если (НашаФирма<>КоллекцияНашихФирм.ОЗУМ)И(НашаФирма<>КоллекцияНашихФирм.Никатор) Тогда НашаФирма= КоллекцияНашихФирм.ОЗУМ; КонецЕсли; Если (НашаФирма=КоллекцияНашихФирм.Никатор)Тогда Фирма=Константа.ФирмаСторонняя; Иначе Фирма=Константа.ФирмаПродавец; КонецЕсли; ВидПленки=Перечисление.ВидыПленки.ПолотноДляПленки; Клей=ВернутьМатериалКлей(); КонецЕсли; глУстановитьНомер(Контекст,1); ДатаДляЭкономистов=ДатаДок; Валюта=Гривня; Курс=Валюта.Курс.Получить(ДатаДляЭкономистов); фРучнойВводШириныРисунка=0; //ШиринаРисунка=0; ОбщийПродажныйОбъем=0; УстановленнаяЦена=0; НомерЗаказа=""; ЗаказВакиля=""; ЕстьДополнительнаяПорезка= Перечисление.ДаНет.Да; РасчетСделан=0; Контрагент=""; ОбщаяТаблицаМассыРасчета=""; ОбщаяТаблицаКрасокРасчета=""; ВыбратьСтроки(); Пока ПолучитьСтроку()=1 Цикл КраскиДизайна=""; КонецЦикла; ЭкономКоэфРастворителяДляСмывкиСекций= 1; ВспомогПроцедура(тбИсторияДокумента,"Изменения",глПользователь,"Новый", "Создан документ"); фНеобходимыеОперации=1; фПараметрыГотовойПродукции=1; фПараметрыИспользуемогоМатериала=1; фОбъемСырья=1; фЦеныПродукцииВкг=1; фЦеныПродукцииВшт=1; КонецПроцедуры //------------------------------------------------------------------------------------------------------------ Процедура ВводНаОсновании(ДокументОснование) Если (ДокументОснование.Вид()<>"ПредварительныйРасчет")и(ДокументОснование.Вид()<>"РасчетЗаказа") Тогда Возврат; КонецЕсли; СоздатьТаблицыКонтрагентов(тбКонтрагенты); ДатаДляЭкономистов=ДатаДок; Валюта=Гривня; Курс=Валюта.Курс.Получить(ДатаДляЭкономистов); НашаФирма=ДокументОснование.НашаФирма; Если ДокументОснование.Вид()="РасчетЗаказа" Тогда Фирма=ДокументОснование.Фирма; ДокументВладелец=ДокументОснование; Иначе Если НашаФирма=КоллекцияНашихФирм.Никатор Тогда Фирма=Константа.ФирмаСторонняя; Иначе Фирма=Константа.ФирмаПродавец; КонецЕсли; КонецЕсли; глУстановитьНомер(Контекст,1); ВидПленки=ДокументОснование.ВидПленки; Менеджер=ДокументОснование.Менеджер; Флажки=ДокументОснование.Флажки; ОсновнойМатериал=ДокументОснование.ОсновнойМатериал; ТолщинаОсновногоМатериала=ДокументОснование.ТолщинаОсновногоМатериала; ШиринаСырьяОсновногоМатериала=ДокументОснование.ШиринаСырьяОсновногоМатериала; КоефНашегоОснМатериала = ДокументОснование.КоефНашегоОснМатериала; Если ДокументОснование.Вид()="РасчетЗаказа" Тогда ДавальческийВесОснМатериала = ДокументОснование.ДавальческийВесОснМатериала; Иначе ДавальческийВесОснМатериала = 0; КонецЕсли; МатериалЛаминации1=ДокументОснование.МатериалЛаминации1; ТолщинаМатериалаЛаминации1=ДокументОснование.ТолщинаМатериалаЛаминации1; ШиринаСырьяМатериалаЛаминации1=ДокументОснование.ШиринаСырьяМатериалаЛаминации1; КоефНашегоМатериалаЛаминации1=ДокументОснование.КоефНашегоМатериалаЛаминации1; Если ДокументОснование.Вид()="РасчетЗаказа" Тогда ДавальческийВесМатериалаЛаминации1 = ДокументОснование.ДавальческийВесМатериалаЛаминации1; Иначе ДавальческийВесМатериалаЛаминации1 = 0; КонецЕсли; МатериалЛаминации2=ДокументОснование.МатериалЛаминации2; ТолщинаМатериалаЛаминации2 =ДокументОснование.ТолщинаМатериалаЛаминации2; ШиринаСырьяМатериалаЛаминации2=ДокументОснование.ШиринаСырьяМатериалаЛаминации2; КоефНашегоМатериалаЛаминации2 =ДокументОснование.КоефНашегоМатериалаЛаминации2; Если ДокументОснование.Вид()="РасчетЗаказа" Тогда ДавальческийВесМатериалаЛаминации2 = ДокументОснование.ДавальческийВесМатериалаЛаминации2; Иначе ДавальческийВесМатериалаЛаминации2 = 0; КонецЕсли; ШиринаРезиновогоВала=ДокументОснование.ШиринаРезиновогоВала; Клей=ДокументОснование.Клей; КакСчитаем=ДокументОснование.КакСчитаем; Если ДокументОснование.Вид()="РасчетЗаказа" Тогда ОбщийПродажныйОбъем=ДокументОснование.ОбщийПродажныйОбъем; КопироватьОбщуюТаблицаМассыРасчета(ДокументОснование.ОбщаяТаблицаМассыРасчета,ОбщийПродажныйОбъем); Иначе КопироватьОбщуюТаблицаМассыРасчета(ДокументОснование.ОбщаяТаблицаМассыРасчета); КонецЕсли; ОбщаяТаблицаМассыРасчета=""; Если ДокументОснование.Вид()="РасчетЗаказа" Тогда КопироватьТаблицыКонтрагентовИСвязанныеСНими(ДокументОснование.Контрагент,0); Иначе КопироватьТаблицыКонтрагентовИСвязанныеСНими(ДокументОснование.Контрагент,1); КонецЕсли; Контрагент=""; НомерЗаказа=""; ЗаказВакиля=""; КвоДорожекНаВалу=ДокументОснование.КвоДорожекНаВалу; ПечатнаяМашина=ДокументОснование.ПечатнаяМашина; КоличествоПереклеек =0; ДокументОснование.ВыбратьСтроки(); Пока ДокументОснование.ПолучитьСтроку()=1 Цикл Если ТипЗначенияСтр(ДокументОснование.Дизайн)<>"Справочник" Тогда Продолжить; КонецЕсли; НужныйТМЦ=""; Если ДокументОснование.Дизайн.Вид()="ТМЦ" Тогда НужныйТМЦ=ДокументОснование.Дизайн; Иначе спрТМЦ=СоздатьОбъект("Справочник.ТМЦ"); Если спрТМЦ.НайтиПоНаименованию(СокрЛП(ДокументОснование.Дизайн.Наименование),0,)=1 Тогда //поищем ТМЦ с таким наименованием Если спрТМЦ.ЭтоГруппа()=0 Тогда НужныйТМЦ=спрТМЦ.ТекущийЭлемент(); КонецЕсли; КонецЕсли; Если НужныйТМЦ="" Тогда //создаем ТМЦ стрГруппаТМЦДляВводаМенеджером= СокрЛП(Константа.ГруппаТМЦДляВводаМенеджером); спрТМЦ.НайтиПоНаименованию(стрГруппаТМЦДляВводаМенеджером,0); Группа=спрТМЦ.ТекущийЭлемент(); спрТМЦ.ИспользоватьРодителя(Группа); спрТМЦ.ИспользоватьДату(Константа.ДатаНачалаРаботы); спрТМЦ.Новый(); спрТМЦ.Наименование=ДокументОснование.Дизайн.Наименование; спрТМЦ.ПолнНаименование=ДокументОснование.Дизайн.ПолнНаименование; спрТМЦ.ВидТМЦ=Перечисление.ВидыТМЦ.Продукция; спрТМЦ.БазоваяЕдиница=ДокументОснование.Дизайн.БазоваяЕдиница; спрТМЦ.ГрафикФормированияПартий = Константа.БазГрафикФормированияПартий; спрТМЦ.ТипТовара=Перечисление.ТипыТоваров.Штучный; спрТМЦ.Счет = СчетПоКоду("26"); спрТМЦ.СтавкаНДС = Константа.БазНДС; спрТМЦ.ВидДеятельности = Константа.БазВидДеятельности; спрТМЦ.ВидЗатрат = Константа.БазВидЗатратТМЦ; спрТМЦ.Комментарий=ДокументОснование.Дизайн.Комментарий; спрТМЦ.Записать(); НужныйТМЦ=спрТМЦ.ТекущийЭлемент(); КонецЕсли; КонецЕсли; НоваяСтрока(); Дизайн=НужныйТМЦ; ШагПечати=ДокументОснование.ШагПечати; ШиринаДорожки=ДокументОснование.ШиринаДорожки; ВысотаДизайна=ДокументОснование.ВысотаДизайна; ШиринаДизайна=ДокументОснование.ШиринаДизайна; КолДорожек=ДокументОснование.КолДорожек; БоковаяЗакладка=ДокументОснование.БоковаяЗакладка; НижняяЗакладка=ДокументОснование.НижняяЗакладка; ВерхняяЗакладка=ДокументОснование.ВерхняяЗакладка; ШиринаРучки=ДокументОснование.ШиринаРучки; ДлинаРучки=ДокументОснование.ДлинаРучки; ВесРучки=ДокументОснование.ВесРучки; ТипПакета=ДокументОснование.ТипПакета; ТипРучки=ДокументОснование.ТипПакета; ЗамесРучки=ДокументОснование.ЗамесРучки; СостояниеДизайна=ДокументОснование.СостояниеДизайна; РисунокДизайна=ДокументОснование.РисунокДизайна; Если ДокументОснование.Вид()="РасчетЗаказа" Тогда РазверткаДизайна=ДокументОснование.РазверткаДизайна; ВысотаФормы = ДокументОснование.ВысотаФормы; ШиринаФормы = ДокументОснование.ШиринаФормы; Заказчик = ДокументОснование.Заказчик; ВысотаФормы = ДокументОснование.ВысотаФормы; ШиринаФормы = ДокументОснование.ШиринаФормы; КоэфДизайнаВЗаказе = ДокументОснование.КоэфДизайнаВЗаказе; ВидНамотки=ДокументОснование.ВидНамотки; ЕстьМетка=ДокументОснование.ЕстьМетка; РасположениеМетки=ДокументОснование.РасположениеМетки; РастояниеМеждуМетками=ДокументОснование.РастояниеМеждуМетками; РастояниеОтРисункаДоМетки=ДокументОснование.РастояниеОтРисункаДоМетки; ВысотаМетки=ДокументОснование.ВысотаМетки; ШиринаМетки=ДокументОснование.ШиринаМетки; ЕстьПоля=ДокументОснование.ЕстьПоля; ПолеСправа=ДокументОснование.ПолеСправа; ПолеСлева=ДокументОснование.ПолеСлева; Иначе РазверткаДизайна=ДокументОснование.Развертка; Заказчик=тбКонтрагенты.ПолучитьЗначение(1,"Контрагент"); КонецЕсли; ИТСтрокиДокумента.НоваяСтрока(); ИТСтрокиДокумента.НомерСтрокиДокумента = НомерСтроки; ИТСтрокиДокумента.Код = СокрЛП(Дизайн.Код); ИТСтрокиДокумента.Дизайн = Дизайн; ИТСтрокиДокумента.ШагПечати = ШагПечати; ИТСтрокиДокумента.ШиринаДорожки = ШиринаДорожки; ИТСтрокиДокумента.ВысотаДизайна = ВысотаДизайна; ИТСтрокиДокумента.ШиринаДизайна = ШиринаДизайна; ИТСтрокиДокумента.КолДорожек = КолДорожек; ИТСтрокиДокумента.Вес1ТысячиПродукции = Вес1ТысячиПродукции; ИТСтрокиДокумента.БоковаяЗакладка = БоковаяЗакладка; ИТСтрокиДокумента.НижняяЗакладка = НижняяЗакладка; ИТСтрокиДокумента.ВерхняяЗакладка = ВерхняяЗакладка; ИТСтрокиДокумента.ДлинаДна = ДлинаДна; ИТСтрокиДокумента.ШиринаРучки = ШиринаРучки; ИТСтрокиДокумента.ДлинаРучки = ДлинаРучки; ИТСтрокиДокумента.ВесРучки = ВесРучки; ИТСтрокиДокумента.ТипПакета = ТипПакета; ИТСтрокиДокумента.ТипРучки = ТипРучки; ИТСтрокиДокумента.ЗамесРучки = ЗамесРучки; ИТСтрокиДокумента.СостояниеДизайна = СостояниеДизайна; ИТСтрокиДокумента.РисунокДизайна = РисунокДизайна; ИТСтрокиДокумента.РазверткаДизайна = РазверткаДизайна; ИТСтрокиДокумента.ВысотаФормы = ВысотаФормы; ИТСтрокиДокумента.ШиринаФормы = ШиринаФормы; ИТСтрокиДокумента.Заказчик = Заказчик; ИТСтрокиДокумента.ВысотаФормы = ВысотаФормы; ИТСтрокиДокумента.ШиринаФормы = ШиринаФормы; ИТСтрокиДокумента.КоэфДизайнаВЗаказе = КоэфДизайнаВЗаказе; ТаблицаКрасокДизайна=СоздатьОбъект("ИндексированнаяТаблица"); СоздатьТаблицуКрасок(ТаблицаКрасокДизайна); Если ДокументОснование.Вид()="РасчетЗаказа" Тогда ЗагрузитьТаблицуКрасокДизайна(ДокументОснование.КраскиДизайна,ТаблицаКрасокДизайна,1); Иначе ЗагрузитьТаблицуКрасокДизайна(ДокументОснование.ОбщаяТаблицаКрасокРасчета,ТаблицаКрасокДизайна,1); КонецЕсли; ИТСтрокиДокумента.ТаблицаКрасок=ТаблицаКрасокДизайна; ИТСтрокиДокумента.ВидНамотки=ВидНамотки; ИТСтрокиДокумента.ЕстьМетка=ЕстьМетка; ИТСтрокиДокумента.РасположениеМетки=РасположениеМетки; ИТСтрокиДокумента.РастояниеМеждуМетками=РастояниеМеждуМетками; ИТСтрокиДокумента.РастояниеОтРисункаДоМетки=РастояниеОтРисункаДоМетки; ИТСтрокиДокумента.ВысотаМетки=ВысотаМетки; ИТСтрокиДокумента.ШиринаМетки=ШиринаМетки; ИТСтрокиДокумента.ЕстьПоля=ЕстьПоля; ИТСтрокиДокумента.ПолеСправа=ПолеСправа; ИТСтрокиДокумента.ПолеСлева=ПолеСлева; КонецЦикла; БольшаяТаблицаРасположенияДизайновНаВалуСтрокой=""; БольшаяТаблицаРасположенияДизайновНаВалуЧужая=СоздатьОбъект("ТаблицаЗначений"); БольшаяТаблицаРасположенияДизайновНаВалуЧужая.Загрузить(ЗначениеИзСтроки(ДокументОснование.БольшаяТаблицаРасположенияДизайновНаВалуСтрокой)); СоздатьТаблицуРасположенияДизайновНаВалу(); КвоКолонок=БольшаяТаблицаРасположенияДизайновНаВалуЧужая.КоличествоКолонок(); КвоСтрок=БольшаяТаблицаРасположенияДизайновНаВалуЧужая.КоличествоСтрок(); Если КвоСтрок<>0 Тогда БольшаяТаблицаРасположенияДизайновНаВалу.КоличествоСтрок(КвоСтрок); КонецЕсли; Для НомСтр=1 По КвоСтрок Цикл Для НомКол=1 По КвоКолонок Цикл Значение=БольшаяТаблицаРасположенияДизайновНаВалуЧужая.ПолучитьЗначение(НомСтр,НомКол); Если ТипЗначенияСтр(Значение)<>"СписокЗначений" Тогда Продолжить; КонецЕсли; НовоеЗначение=СоздатьОбъект("СписокЗначений"); Если Значение.Получить("Дизайн")="Переклейка" Тогда НовоеЗначение=Значение; Иначе НомерДизайна=Значение.Получить("НомерДизайна"); ПолучитьСтрокуПоНомеру(НомерДизайна); ВыбранДизайн=Дизайн; ВыбранШагПечати=Значение.Получить("ШагПечати"); ВыбранШиринаДорожки=Значение.Получить("ШиринаДорожки"); НовоеЗначение.Установить("НомерДизайна",НомерДизайна); НовоеЗначение.Установить("Дизайн",ВыбранДизайн); НовоеЗначение.Установить("ШагПечати",ВыбранШагПечати); НовоеЗначение.Установить("ШиринаДорожки",ВыбранШиринаДорожки); КонецЕсли; БольшаяТаблицаРасположенияДизайновНаВалу.УстановитьЗначение(НомСтр,НомКол,НовоеЗначение); КонецЦикла; КонецЦикла; Если ДокументОснование.Вид()="РасчетЗаказа" Тогда ЭкономКоэфРастворителяДляСмывкиСекций=ДокументОснование.ЭкономКоэфРастворителяДляСмывкиСекций; Иначе ЭкономКоэфРастворителяДляСмывкиСекций=1; КонецЕсли; ВспомогПроцедура(тбИсторияДокумента,"Изменения",глПользователь,"Новый", "Создан документ"); КонецПроцедуры //------------------------------------------------------------------------------------------------------------ Процедура ПриВыбореЗакладки(Номер,Значение) КакаяЗакладка=Значение; Если Значение="Менеджерский" Тогда ИзмНаличиеМакета(); //Если тбКонтрагенты.КоличествоСтрок()>1 Тогда // Форма.фПродукцияВсехЗаказчиков.Видимость(1); //Иначе // Форма.фПродукцияВсехЗаказчиков.Видимость(0); //КонецЕсли; ИначеЕсли Значение="ПродажныеДанные" Тогда КонецЕсли; Форма.ИспользоватьСлой("Общий," + Значение,2); КонецПроцедуры //------------------------------------------------------------------------------------------------------------ Процедура ИзмФлагЗапечаткаТекущДизайна() Если фЗапечаткаТекущДизайна=2 Тогда ТекСтрокаТаблицаДизайновДляТехнолога=ПДИнТбТехнолог.Данные.ТекущаяСтрока; Иначе //сохраняем пред.таблицу ИТЗТехнолог = ПДИнТбТехнолог.Данные.ИндексированнаяТаблица; КоличествоСтрок=ИТЗТехнолог.КоличествоСтрок(); ТекущаяСтрока=ПДИнТбТехнолог.Данные.ТекущаяСтрока; Если (ТекущаяСтрока<>0) Тогда ИТЗКраски = ПДИТКраски.Данные.ИндексированнаяТаблица; ТекущТаблицаКрасок=СоздатьОбъект("ИндексированнаяТаблица"); ИТЗКраски.Выгрузить(ТекущТаблицаКрасок); ТекДизайн=ИТЗТехнолог.ПолучитьЗначение(ТекущаяСтрока,"Дизайн"); Если ИТСтрокиДокумента.НомерИндекса("инДизайн")=0 Тогда ИТСтрокиДокумента.ДобавитьИндекс("инДизайн","Дизайн"); КонецЕсли; НомСтр=ИТСтрокиДокумента.НайтиСтроку("инДизайн", ТекДизайн); Если НомСтр<>0 Тогда ТаблицаКрасок=ИТСтрокиДокумента.ПолучитьЗначение(НомСтр,"ТаблицаКрасок"); Иначе Сообщить("Ошибка в ИзмФлагЗапечаткаТекущДизайна"); Возврат ; КонецЕсли; ИТСтрокиДокумента.УстановитьЗначение(НомСтр,"ТаблицаКрасок",ТекущТаблицаКрасок); КонецЕсли; //ЗаполнитьОбщуюТаблицуКрасок(); КонецЕсли; ОбновитьТаблицыДокумента(); КонецПроцедуры //------------------------------------------------------------------------------------------------------------ Процедура УстановкаЗамесаВТаблицы(Замес,тбСырье1,тбКраситель1,тбДобавки1,тбСырье2,тбКраситель2,тбДобавки2,тбСырье3,тбКраситель3,тбДобавки3) ЭлементыЗамеса = СоздатьОбъект("Справочник.ЭлементыЗамеса"); ЭлементыЗамеса.ИспользоватьДату(РабочаяДата()); ЭлементыЗамеса.ИспользоватьВладельца(Замес); // очищаем все строки тбСырье1.УдалитьСтроки(); тбСырье2.УдалитьСтроки(); тбСырье3.УдалитьСтроки(); // заполняем таблицу ЭлементыЗамеса.ВыбратьЭлементыПоРеквизиту("ВидМатериала",Перечисление.ВидыМатериалов.ЭкструзСырье,1,0); Пока ЭлементыЗамеса.ПолучитьЭлемент() = 1 Цикл Если ЭлементыЗамеса.ПометкаУдаления() = 1 Тогда Продолжить; КонецЕсли; Если ЭлементыЗамеса.НомерСлоя=1 Тогда тбСырье=тбСырье1; ИначеЕсли ЭлементыЗамеса.НомерСлоя=2 Тогда тбСырье=тбСырье2; ИначеЕсли ЭлементыЗамеса.НомерСлоя=3 Тогда тбСырье=тбСырье3; КонецЕсли; тбСырье.НоваяСтрока(); тбСырье.Материал = ЭлементыЗамеса.Материал; тбСырье.ПроцентЗаполнения = ЭлементыЗамеса.ПроцентЗаполнения; КонецЦикла; тбКраситель1.УдалитьСтроки(); тбКраситель2.УдалитьСтроки(); тбКраситель3.УдалитьСтроки(); ЭлементыЗамеса.ВыбратьЭлементыПоРеквизиту("ВидМатериала",Перечисление.ВидыМатериалов.ЭкструзКраситель,1,0); Пока ЭлементыЗамеса.ПолучитьЭлемент() = 1 Цикл Если ЭлементыЗамеса.ПометкаУдаления() = 1 Тогда Продолжить; КонецЕсли; Если ЭлементыЗамеса.НомерСлоя=1 Тогда тбКраситель=тбКраситель1; ИначеЕсли ЭлементыЗамеса.НомерСлоя=2 Тогда тбКраситель=тбКраситель2; ИначеЕсли ЭлементыЗамеса.НомерСлоя=3 Тогда тбКраситель=тбКраситель3; КонецЕсли; тбКраситель.НоваяСтрока(); тбКраситель.Материал = ЭлементыЗамеса.Материал; тбКраситель.ПроцентЗаполнения = ЭлементыЗамеса.ПроцентЗаполнения; КонецЦикла; тбДобавки1.УдалитьСтроки(); тбДобавки2.УдалитьСтроки(); тбДобавки3.УдалитьСтроки(); ЭлементыЗамеса.ВыбратьЭлементыПоРеквизиту("ВидМатериала",Перечисление.ВидыМатериалов.ЭкструзДобавка,1,0); Пока ЭлементыЗамеса.ПолучитьЭлемент() = 1 Цикл Если ЭлементыЗамеса.ПометкаУдаления() = 1 Тогда Продолжить; КонецЕсли; Если ЭлементыЗамеса.НомерСлоя=1 Тогда тбДобавки=тбДобавки1; ИначеЕсли ЭлементыЗамеса.НомерСлоя=2 Тогда тбДобавки=тбДобавки2; ИначеЕсли ЭлементыЗамеса.НомерСлоя=3 Тогда тбДобавки=тбДобавки3; КонецЕсли; тбДобавки.НоваяСтрока(); тбДобавки.Материал = ЭлементыЗамеса.Материал; тбДобавки.ПроцентЗаполнения = ЭлементыЗамеса.ПроцентЗаполнения; КонецЦикла; КонецПроцедуры //------------------------------------------------------------------------------------------------------------ Процедура ИзменитьИсториюДокумента() Таб=СоздатьОбъект("ТаблицаЗначений"); Таб.Загрузить(тбИсторияДокумента); ОткрытьФормуМодально("Обработка.ВыводТаблицыЗначений",Таб); тбИсторияДокумента.Загрузить(Таб); КонецПроцедуры //------------------------------------------------------------------------------------------------------------ Процедура Печать() Если ПустоеЗначение(РасчетСделан)=1 Тогда ТекстПредупреждения= "Необходимо пересчитать расчет!"+РазделительСтрок+"Обратитесь к технологу!"; Предупреждение(ТекстПредупреждения); Возврат; КонецЕсли; ВыбратьСтроки(); Пока ПолучитьСтроку()=1 Цикл Если РазверткаДизайна=0 Тогда ТекстПредупреждения= "Не выбрана развертка!"+РазделительСтрок+"Обратитесь к технологу!"; Предупреждение(ТекстПредупреждения); Возврат; КонецЕсли; КонецЦикла; Пленка=1; Пакеты=2; Таб = СоздатьОбъект("Таблица"); Если тбКонтрагенты.КоличествоСтрок()=1 Тогда Таб.ИсходнаяТаблица("ПечатьДляОдногоЗаказчика"); Иначе Таб.ИсходнаяТаблица("ПечатьДляНесколькихЗаказчиков"); КонецЕсли; //Выводим шапку НазваниеОтчета="Карта расчета № "+НомерДок+" от "+ДатаДок; Таб.ВывестиСекцию("Шапка"); Если тбКонтрагенты.КоличествоСтрок()=1 Тогда Иначе Таб.ВывестиСекцию("ПустаяСекция"); Таб.ВывестиСекцию("Менеджер"); Таб.ВывестиСекцию("ПустаяСекция"); КонецЕсли; Для НомКонтрагента=1 По тбКонтрагенты.КоличествоСтрок() Цикл ТекЗаказчик= тбКонтрагенты.ПолучитьЗначение(НомКонтрагента,"Контрагент"); ВыбранЗаказ=тбКонтрагенты.ПолучитьЗначение(НомКонтрагента,"ЗаказВакиля"); УстановленныйОбъемТекЗаказчика=тбКонтрагенты.ПолучитьЗначение(НомКонтрагента,"УстановленныйОбъем"); СебистоимостьПечатныхФормТекЗаказчика=тбКонтрагенты.ПолучитьЗначение(НомКонтрагента,"СебистоимостьПечатныхФорм"); ПродажнаяСтоимостьФормТекЗаказчика=тбКонтрагенты.ПолучитьЗначение(НомКонтрагента,"ПродажнаяСтоимостьФорм"); УстановленнаяЦенаБезФормТекЗаказчика=тбКонтрагенты.ПолучитьЗначение(НомКонтрагента,"УстановленнаяЦенаБезФорм"); УстановленнаяЦенаТекЗаказчика=тбКонтрагенты.ПолучитьЗначение(НомКонтрагента,"УстановленнаяЦена"); РентабельностьТекЗаказчика= тбКонтрагенты.ПолучитьЗначение(НомКонтрагента,"РентабельностьЗаказа"); Если тбКонтрагенты.КоличествоСтрок()=1 Тогда Таб.ВывестиСекцию("ПустаяСекция"); Таб.ВывестиСекцию("КонтрагентМенеджер"); Таб.ВывестиСекцию("ПустаяСекция"); Иначе Если (ПустоеЗначение(ВыбранЗаказ)<>1) Тогда тНомерЗаказа="Заказ № "; НомерЗаказаСтрокой=""+ВыбранЗаказ.НомерДок; тДатаЗаказа=" от "+ВыбранЗаказ.ДатаДок; Иначе тНомерЗаказа=""; ЗаказСтрокой=""; тДатаЗаказа=""; КонецЕсли; Таб.ВывестиСекцию("ПустаяСекция"); Таб.ВывестиСекцию("Контрагент"); Таб.ВывестиСекцию("ПустаяСекция"); КонецЕсли; ТаблицаРасчетнаяМасса=СоздатьОбъект("ТаблицаЗначений"); ТаблицаРасчетнаяМасса.Загрузить(тбКонтрагенты.ПолучитьЗначение(НомКонтрагента,"тбРасчетнаяМасса")); Если тбКонтрагенты.КоличествоСтрок()>1 Тогда Иначе Если (ПустоеЗначение(ВыбранЗаказ)<>1) Тогда ЗаказСтрокой="Заказ № "+ВыбранЗаказ.НомерДок+" от "+ВыбранЗаказ.ДатаДок; Таб.ВывестиСекцию("ШапкаЗаказ"); КонецЕсли; КонецЕсли; РентабельностьЦеныСтрокой=ПолучитьРентабельностьЦеныСтрокой(РентабельностьТекЗаказчика); ЧтоВывели= 0; Если фНеобходимыеОперации=1 Тогда спОперации=СоздатьОбъект("СписокЗначений"); Если фЭкструзия=1 Тогда спОперации.ДобавитьЗначение("Экструзия"); КонецЕсли; Если фПечать=1 Тогда спОперации.ДобавитьЗначение("Печать"); КонецЕсли; Если фФлексоформа=1 Тогда спОперации.ДобавитьЗначение("Флексоформа"); КонецЕсли; Если фЛаминация=1 Тогда спОперации.ДобавитьЗначение("Ламинация"); КонецЕсли; Если фПакетоделание=1 Тогда спОперации.ДобавитьЗначение("Пакетоделание"); КонецЕсли; Если фБабинорезка=1 Тогда спОперации.ДобавитьЗначение("Бабинорезка"); КонецЕсли; Заголовок="Стоимость клише:"; Данные=""+СебистоимостьПечатныхФормТекЗаказчика; Если ПродажнаяСтоимостьФормТекЗаказчика<> СебистоимостьПечатныхФормТекЗаказчика Тогда Заголовок2="Прод.цена клише:"; Данные3=""+ПродажнаяСтоимостьФормТекЗаказчика; Иначе Заголовок2=""; Данные3=""; КонецЕсли; Таб.ВывестиСекцию("ШапкаОпераций"); ЧтоВывели= ЧтоВывели+1; Нет=0; ТонкаяТочечная=1; ОченьТонкая=2 ; ТонкаяСплошная=3; СредняяСплошная=4; ТолстаяСплошная=5; Двойная=6; ТонкаяСреднийПунктир=7; ТонкаяДлинныйПунктир=8; ТолстаяПунктир=9; Заголовок=""; Данные=""; Данные2=""; НазвСекции= "Операция"; Для ы=1 По спОперации.РазмерСписка() Цикл Если спОперации.РазмерСписка()=1 Тогда РамкаСлева=ТонкаяСплошная;РамкаСверху=ТонкаяСплошная;РамкаСправа=ТонкаяСплошная;РамкаСнизу=ТонкаяСплошная; ИначеЕсли ы=1 Тогда РамкаСлева=ТонкаяСплошная;РамкаСверху=ТонкаяСплошная;РамкаСправа=ТонкаяСплошная;РамкаСнизу=Нет; ИначеЕсли ы=спОперации.РазмерСписка() Тогда РамкаСлева=ТонкаяСплошная;РамкаСверху=Нет;РамкаСправа=ТонкаяСплошная;РамкаСнизу=ТонкаяСплошная; Иначе РамкаСлева=ТонкаяСплошная;РамкаСверху=Нет;РамкаСправа=ТонкаяСплошная;РамкаСнизу=Нет; КонецЕсли; Если (УстановленнаяЦенаТекЗаказчика<>0)И(УстановленныйОбъемТекЗаказчика<>0)И(фПодписьСогласованиеЦены=1) Тогда Если ы=1 Тогда Заголовок="Продаж.цена:"; Данные=""+УстановленнаяЦенаТекЗаказчика+" "+Валюта.Кратко; Данные2=РентабельностьЦеныСтрокой; ЧтоВывели= ЧтоВывели+1; ИначеЕсли ы=2 Тогда Заголовок="Продаж.объем:"; Данные=""+УстановленныйОбъемТекЗаказчика+?(КакСчитаем=1," кг.",?(КакСчитаем=2," тыс.шт.","")); Данные2=""; ЧтоВывели= ЧтоВывели+1; ИначеЕсли ы=3 Тогда Заголовок="Сумма заказа:"; Данные=""+(УстановленныйОбъемТекЗаказчика*УстановленнаяЦенаТекЗаказчика)+" "+Валюта.Кратко; Данные2=""; ЧтоВывели= ЧтоВывели+1; Иначе Заголовок=""; Данные=""; Данные2=""; КонецЕсли; КонецЕсли; текСекц = Таб.ПолучитьСекцию(НазвСекции); текОбл = текСекц.Операция; стрОперация=" "+ы+") "+спОперации.ПолучитьЗначение(ы); текОбл.Текст=стрОперация; текОбл.Рамка(РамкаСлева,РамкаСверху,РамкаСправа,РамкаСнизу); Таб.ВывестиСекцию(текСекц); КонецЦикла; КонецЕсли; Заголовок=""; Данные=""; Данные2=""; Для ы=ЧтоВывели По 3 Цикл Если ы=0 Тогда Заголовок="Стоимость клише:"; Данные=""+СебистоимостьПечатныхФормТекЗаказчика; Если ПродажнаяСтоимостьФормТекЗаказчика<> СебистоимостьПечатныхФормТекЗаказчика Тогда Заголовок2="Прод.цена клише:"; Данные3=""+ПродажнаяСтоимостьФормТекЗаказчика; Иначе Заголовок2=""; Данные3=""; КонецЕсли; Таб.ВывестиСекцию("Клише"); ИначеЕсли ы=1 Тогда Если (УстановленнаяЦенаТекЗаказчика<>0)И(УстановленныйОбъемТекЗаказчика<>0)И(фПодписьСогласованиеЦены=1) Тогда Заголовок="Продаж.цена:"; Данные=""+УстановленнаяЦенаТекЗаказчика+" "+Валюта.Кратко; Данные2=РентабельностьЦеныСтрокой; Таб.ВывестиСекцию("ПринятаяЦена"); КонецЕсли; ИначеЕсли ы=2 Тогда Если (УстановленнаяЦенаТекЗаказчика<>0)И(УстановленныйОбъемТекЗаказчика<>0)И(фПодписьСогласованиеЦены=1) Тогда Заголовок="Продаж.объем:"; Данные=""+УстановленныйОбъемТекЗаказчика+?(КакСчитаем=1," кг.",?(КакСчитаем=2," тыс.шт.","")); Данные2=""; Таб.ВывестиСекцию("ПринятаяЦена"); КонецЕсли; ИначеЕсли ы=3 Тогда Если (УстановленнаяЦенаТекЗаказчика<>0)И(УстановленныйОбъемТекЗаказчика<>0)И(фПодписьСогласованиеЦены=1) Тогда Заголовок="Сумма заказа:"; Данные=""+(УстановленныйОбъемТекЗаказчика*УстановленнаяЦенаТекЗаказчика)+" "+Валюта.Кратко; Данные2=""; Таб.ВывестиСекцию("ПринятаяЦена"); КонецЕсли; Иначе Если (УстановленнаяЦенаТекЗаказчика<>0)И(УстановленныйОбъемТекЗаказчика<>0)И(фПодписьСогласованиеЦены=1) Тогда Заголовок=""; Данные=""; Данные2=""; Таб.ВывестиСекцию("ПринятаяЦена"); КонецЕсли; КонецЕсли; ЧтоВывели= ЧтоВывели+1; КонецЦикла; ЧьяДоставкаТекЗаказчика= тбКонтрагенты.ПолучитьЗначение(НомКонтрагента,"ЧьяДоставка"); Доставка=тбКонтрагенты.ПолучитьЗначение(НомКонтрагента,"ВыборДоставки"); ТаблицаОплатыИДоставка=СоздатьОбъект("ТаблицаЗначений"); ТаблицаОплатыИДоставка.НоваяКолонка("Строка","Строка",50); ТаблицаОплатыИДоставка.НоваяСтрока(); ТаблицаОплатыИДоставка.Строка="Форма 1 = "+Безнал+"%"; ТаблицаОплатыИДоставка.НоваяСтрока(); ТаблицаОплатыИДоставка.Строка="Форма 2 = "+Нал+" %"; СтрокаДоставки=""; Если ЧьяДоставкаТекЗаказчика=1 Тогда ТаблицаОплатыИДоставка.НоваяСтрока(); ТаблицаОплатыИДоставка.Строка="Доставка наша. "; Если ПустоеЗначение(Доставка)=1 Тогда ТаблицаОплатыИДоставка.НоваяСтрока(); ТаблицаОплатыИДоставка.Строка="Направление и цена не указаны!"; Иначе ТаблицаОплатыИДоставка.НоваяСтрока(); ТаблицаОплатыИДоставка.Строка="Направление- > "+Доставка.Наименование; ТаблицаОплатыИДоставка.НоваяСтрока(); ТаблицаОплатыИДоставка.Строка="Цена доставки 1кг: "+РасчетСтоимости.ЦенаДоставки(Доставка)+" "+Валюта.Кратко; КонецЕсли; Иначе ТаблицаОплатыИДоставка.НоваяСтрока(); ТаблицаОплатыИДоставка.Строка="Доставка заказчика"; КонецЕсли; Нет=0; ТонкаяТочечная=1; ОченьТонкая=2 ; ТонкаяСплошная=3; СредняяСплошная=4; ТолстаяСплошная=5; Двойная=6; ТонкаяСреднийПунктир=7; ТонкаяДлинныйПунктир=8; ТолстаяПунктир=9; Таб.ВывестиСекцию("ЗаголовокТаблицыФормаОплатыИДоставка"); НазвСекции= "СтрокаТаблицыОплатыИДоставка"; КоличествоСтрок=ТаблицаОплатыИДоставка.КоличествоСтрок(); ТаблицаОплатыИДоставка.ВыбратьСтроки(); Пока ТаблицаОплатыИДоставка.ПолучитьСтроку()=1 Цикл НомерСтрокиВТаблицеОплатыИДоставка=ТаблицаОплатыИДоставка.НомерСтроки; Если НомерСтрокиВТаблицеОплатыИДоставка=1 Тогда РамкаСлева=ТонкаяСплошная;РамкаСверху=ТонкаяСплошная;РамкаСправа=ТонкаяСплошная;РамкаСнизу=Нет; ИначеЕсли НомерСтрокиВТаблицеОплатыИДоставка=КоличествоСтрок Тогда РамкаСлева=ТонкаяСплошная;РамкаСверху=Нет;РамкаСправа=ТонкаяСплошная;РамкаСнизу=ТонкаяСплошная; Иначе РамкаСлева=ТонкаяСплошная;РамкаСверху=Нет;РамкаСправа=ТонкаяСплошная;РамкаСнизу=Нет; КонецЕсли; СтрокаТаблицыОплатыИДоставка=" "+ТаблицаОплатыИДоставка.Строка; текСекц = Таб.ПолучитьСекцию(НазвСекции); текОбл = текСекц.ОплатаИДоставка; текОбл.Текст=СтрокаТаблицыОплатыИДоставка; текОбл.Рамка(РамкаСлева,РамкаСверху,РамкаСправа,РамкаСнизу); Таб.ВывестиСекцию(текСекц); КонецЦикла; Таб.ВывестиСекцию("ПустаяСекция"); Таб.Опции(0,0,0,0); Если фПараметрыГотовойПродукции=1 Тогда Таб.ВывестиСекцию("ШапкаГотовПродукт"); Нет=0; ТонкаяТочечная=1; ОченьТонкая=2 ; ТонкаяСплошная=3; СредняяСплошная=4; ТолстаяСплошная=5; Двойная=6; ТонкаяСреднийПунктир=7; ТонкаяДлинныйПунктир=8; ТолстаяПунктир=9; НазвГоризонтСекции= "ТаблицаДизайны"; НазвВертикалСекции="|БольшаяСекция"; НазвСекции= НазвГоризонтСекции+НазвВертикалСекции; Таб.ВывестиСекцию(НазвСекции) ; НазвВертикалСекции="|ВертСекция_3"; НазвСекции= НазвГоризонтСекции+НазвВертикалСекции; Таб.ПрисоединитьСекцию(НазвСекции) ; НазвВертикалСекции="|ВертСекция_4"; НазвСекции= НазвГоризонтСекции+НазвВертикалСекции; Таб.ПрисоединитьСекцию(НазвСекции) ; Если (фПакетоделание=1) Тогда НазвВертикалСекции="|ВертСекция_5"; НазвСекции= НазвГоризонтСекции+НазвВертикалСекции; Таб.ПрисоединитьСекцию(НазвСекции) ; НазвВертикалСекции="|ВертСекция_6"; НазвСекции= НазвГоризонтСекции+НазвВертикалСекции; Таб.ПрисоединитьСекцию(НазвСекции) ; КонецЕсли; Если Итог("Вес1ТысячиПродукции")<>0 Тогда НазвВертикалСекции="|ВертСекция_7"; НазвСекции= НазвГоризонтСекции+НазвВертикалСекции; Таб.ПрисоединитьСекцию(НазвСекции) ; КонецЕсли; ВыбратьСтроки(); Пока ПолучитьСтроку()=1 Цикл Если Заказчик<>ТекЗаказчик Тогда Продолжить; КонецЕсли; НазвГоризонтСекции= "Дизайны"; КодДизайна=Дизайн.Код; ВыбранДизайн=Дизайн.Наименование; //ВыбранШиринаДорожки=ШиринаДорожки; ВыбранВысотаДизайна=ВысотаДизайна; ВыбранШиринаДизайна=ШиринаДизайна; ВыбранКолДорожек=КолДорожек; НазвВертикалСекции="|БольшаяСекция"; НазвСекции= НазвГоризонтСекции+НазвВертикалСекции; Таб.ВывестиСекцию(НазвСекции) ; НазвВертикалСекции="|ВертСекция_3"; НазвСекции= НазвГоризонтСекции+НазвВертикалСекции; Таб.ПрисоединитьСекцию(НазвСекции) ; НазвВертикалСекции="|ВертСекция_4"; НазвСекции= НазвГоризонтСекции+НазвВертикалСекции; Таб.ПрисоединитьСекцию(НазвСекции) ; Если (фПакетоделание=1) Тогда ИдентификаторТипПакета =ТипПакета.Идентификатор(); ПредставлениеТипПакета=Метаданные.Перечисление("ТипыПакетов").Значение(ИдентификаторТипПакета).Представление; Если ПустоеЗначение(ТипРучки)=1 Тогда ПредставлениеТипРучки = "Без ручки"; Иначе ИдентификаторТипРучки =ТипРучки.Идентификатор(); Если (ИдентификаторТипПакета="СПрорезнойРучкой") И (ИдентификаторТипРучки="БезРучки")Тогда ПредставлениеТипРучки = "Без усиления"; Иначе ПредставлениеТипРучки=Метаданные.Перечисление("ТипыРучек").Значение(ИдентификаторТипРучки).Представление; КонецЕсли; КонецЕсли; НазвВертикалСекции="|ВертСекция_5"; НазвСекции= НазвГоризонтСекции+НазвВертикалСекции; Таб.ПрисоединитьСекцию(НазвСекции); НазвВертикалСекции="|ВертСекция_6"; НазвСекции= НазвГоризонтСекции+НазвВертикалСекции; Таб.ПрисоединитьСекцию(НазвСекции) ; КонецЕсли; Если Итог("Вес1ТысячиПродукции")<>0 Тогда ВесТысячиШтук=Вес1ТысячиПродукции; НазвВертикалСекции="|ВертСекция_7"; НазвСекции= НазвГоризонтСекции+НазвВертикалСекции; Таб.ПрисоединитьСекцию(НазвСекции) ; КонецЕсли; КонецЦикла; Таб.ВывестиСекцию("ПустаяСекция"); КонецЕсли; Если фПараметрыИспользуемогоМатериала=1 Тогда Таб.ВывестиСекцию("ЗаголовокТабМатериал"); Таб.ВывестиСекцию("ШапкаМатриалов"); ЧьяПоставка=""; ОсновнойМатериалСтрокой=""; Если ПустоеЗначение(ОсновнойМатериал)=0 Тогда ОсновнойМатериалСтрокой=ОсновнойМатериал.Наименование; Если КоефНашегоОснМатериала=1 Тогда ЧьяПоставка="Собственная"; ИначеЕсли КоефНашегоОснМатериала=0 Тогда ЧьяПоставка="Заказчика"; Иначе ЧьяПоставка="Частично наша"; КонецЕсли; Таб.ВывестиСекцию("ОсновнойСлой"); КонецЕсли; МатериалЛаминации1Строкой=""; Если ПустоеЗначение(МатериалЛаминации1)=0 Тогда МатериалЛаминации1Строкой=МатериалЛаминации1.Наименование; Если КоефНашегоМатериалаЛаминации1=1 Тогда ЧьяПоставка="Собственная"; ИначеЕсли КоефНашегоМатериалаЛаминации1=0 Тогда ЧьяПоставка="Заказчика"; Иначе ЧьяПоставка="Частично наша"; КонецЕсли; Таб.ВывестиСекцию("СлойЛаминации1"); КонецЕсли; МатериалЛаминации2Строкой=""; Если ПустоеЗначение(МатериалЛаминации2)=0 Тогда МатериалЛаминации2Строкой=МатериалЛаминации2.Наименование; Если КоефНашегоМатериалаЛаминации2=1 Тогда ЧьяПоставка="Собственная"; ИначеЕсли КоефНашегоМатериалаЛаминации2=0 Тогда ЧьяПоставка="Заказчика"; Иначе ЧьяПоставка="Частично наша"; КонецЕсли; Таб.ВывестиСекцию("СлойЛаминации2"); КонецЕсли; Таб.ВывестиСекцию("ПустаяСекция"); КонецЕсли; Если фОбъемСырья=1 Тогда Таб.ВывестиСекцию("ЗаголовокТаблицыНеобходимоСырья"); ТаблицаРасчетнаяМасса.ВыбратьСтроки(); ТаблицаРасчетнаяМасса.ПолучитьСтроку(); Объем=""+ТаблицаРасчетнаяМасса.Масса+" кг"; стрВыводимСекция="ТаблицаНеобходимоСырья|ВертСекция_1"; стрНомВертСекции= "Назв_Строк"; стрВыводимСекция="ТаблицаНеобходимоСырья|Назв_Строк"; Таб.ВывестиСекцию(стрВыводимСекция); Пока ТаблицаРасчетнаяМасса.ПолучитьСтроку()=1 Цикл Объем=""+ТаблицаРасчетнаяМасса.Масса+" кг"; стрВыводимСекция="ТаблицаНеобходимоСырья|ВертСекция_1"; Таб.ПрисоединитьСекцию(стрВыводимСекция); КонецЦикла; Если ТаблицаРасчетнаяМасса.КоличествоСтрок()<>0 Тогда Если ТаблицаРасчетнаяМасса.ПолучитьЗначение(1,"НормаОсновногоМатериала")=0 Тогда СделатьРасчет(); КонецЕсли; КонецЕсли; ТаблицаРасчетнаяМасса.ВыбратьСтроки(); ТаблицаРасчетнаяМасса.ПолучитьСтроку(); РасходМатериала1=""+Окр(ТаблицаРасчетнаяМасса.НормаОсновногоМатериала,4,1); стрНомВертСекции= "Назв_Строк"; стрВыводимСекция="РасходОсновногоСырья|"+стрНомВертСекции; Таб.ВывестиСекцию(стрВыводимСекция); Пока ТаблицаРасчетнаяМасса.ПолучитьСтроку()=1 Цикл РасходМатериала1=""+Окр(ТаблицаРасчетнаяМасса.НормаОсновногоМатериала,4,1); стрНомВертСекции= "ВертСекция_1"; стрВыводимСекция="РасходОсновногоСырья|"+стрНомВертСекции; Таб.ПрисоединитьСекцию(стрВыводимСекция); КонецЦикла; Если фЛаминация=1 Тогда Если ПустоеЗначение(МатериалЛаминации1)=0 Тогда ТаблицаРасчетнаяМасса.ВыбратьСтроки(); ТаблицаРасчетнаяМасса.ПолучитьСтроку(); РасходМатериала2=""+Окр(ТаблицаРасчетнаяМасса.НормаМатериалаЛаминации1,4,1); стрВыводимСекция="РасходСырья1Ламината|Назв_Строк"; Таб.ВывестиСекцию(стрВыводимСекция); Пока ТаблицаРасчетнаяМасса.ПолучитьСтроку()=1 Цикл РасходМатериала2=""+Окр(ТаблицаРасчетнаяМасса.НормаМатериалаЛаминации1,4,1); стрВыводимСекция="РасходСырья1Ламината|ВертСекция_1"; Таб.ПрисоединитьСекцию(стрВыводимСекция); КонецЦикла; Если ПустоеЗначение(МатериалЛаминации2)=0 Тогда ТаблицаРасчетнаяМасса.ВыбратьСтроки(); ТаблицаРасчетнаяМасса.ПолучитьСтроку(); РасходМатериала3=""+Окр(ТаблицаРасчетнаяМасса.НормаМатериалаЛаминации2,4,1); стрНомВертСекции= "Назв_Строк"; стрВыводимСекция="РасходСырья2Ламината|"+стрНомВертСекции; Таб.ВывестиСекцию(стрВыводимСекция); Пока ТаблицаРасчетнаяМасса.ПолучитьСтроку()=1 Цикл РасходМатериала3=""+Окр(ТаблицаРасчетнаяМасса.НормаМатериалаЛаминации2,4,1); стрНомВертСекции= "ВертСекция_1"; стрВыводимСекция="РасходСырья2Ламината|"+стрНомВертСекции; Таб.ПрисоединитьСекцию(стрВыводимСекция); КонецЦикла; КонецЕсли; КонецЕсли; КонецЕсли; Таб.ВывестиСекцию("ПустаяСекция"); КонецЕсли; Если фТехнологическиеПараметры=1 Тогда Если (фПечать=1)И(КоличествоСтрок()>0) Тогда ЧастьТабЧасти=СоздатьОбъект("ТаблицаЗначений"); ЧастьТабЧасти.НоваяКолонка("Дизайн","Справочник.ТМЦ"); ЧастьТабЧасти.НоваяКолонка("РазверткаДизайна","Число",19,0); ВыгрузитьТабличнуюЧасть(ЧастьТабЧасти,"Дизайн,РазверткаДизайна"); ВремРазвертка=ЧастьТабЧасти.ПолучитьЗначение(1,"РазверткаДизайна"); РазверткиРазные=0; ЧастьТабЧасти.ВыбратьСтроки(); Пока ЧастьТабЧасти.ПолучитьСтроку()=1 Цикл Если ВремРазвертка<>ЧастьТабЧасти.РазверткаДизайна Тогда РазверткиРазные=1; Прервать; КонецЕсли; КонецЦикла; Если РазверткиРазные=0 Тогда стрРазвертка="Развертка всех дизайнов- "+ВремРазвертка; Таб.ВывестиСекцию("Развертка"); Иначе ЧастьТабЧасти.ВыбратьСтроки(); Пока ЧастьТабЧасти.ПолучитьСтроку()=1 Цикл стрРазвертка="Развертка-"+ЧастьТабЧасти.РазверткаДизайна+"("+ЧастьТабЧасти.Дизайн.Наименование+")"; Таб.ВывестиСекцию("Развертка"); КонецЦикла; КонецЕсли; КонецЕсли; Если(фЛаминация=1) Тогда стрВал="Ширина Вала - "+ШиринаРезиновогоВала; Таб.ВывестиСекцию("ВалДляЛаминации"); КонецЕсли; Таб.ВывестиСекцию("ШапкаТаблицыКрасок"); КолСтрок=0; ИТЗКраски = ПДИТКраски.Данные.ИндексированнаяТаблица; ИТЗКраски.ВНачало(); Пока ИТЗКраски.СледующаяСтрока()=1 Цикл Если ИТЗКраски.ПроцентЗапечатки=0 Тогда Продолжить; КонецЕсли; Краска=ИТЗКраски.Краска.Наименование; ПроцентЗапечатки=ИТЗКраски.ПроцентЗапечатки; КвоФотоФорм=ИТЗКраски.КвоФотоФорм; ЛинеатураАнилокса=ИТЗКраски.Анилокс.Линеатура; Таб.ВывестиСекцию("СтрокаТаблицыКрасок"); КолСтрок= КолСтрок+1; КонецЦикла; Если КолСтрок=0 Тогда Краска="Краски не используются"; ПроцентЗапечатки=""; КвоФотоФорм=""; ЛинеатураАнилокса=""; Таб.ВывестиСекцию("СтрокаТаблицыКрасок"); КонецЕсли; КонецЕсли; Если фЦеныПродукцииВкг=1 Тогда стрЗаг="Цена за 1 кг. готовой продукции" ; Таб.ВывестиСекцию("ЗаголовокТаблицыСтоимость"); ТаблицаРасчетнаяМасса.ВыбратьСтроки(); ТаблицаРасчетнаяМасса.ПолучитьСтроку(); Объем=""+ТаблицаРасчетнаяМасса.Масса+" кг"; стрНомВертСекции= "Назв_Строк"; стрВыводимСекция="ТаблицаСтоимость|"+стрНомВертСекции; Таб.ВывестиСекцию(стрВыводимСекция); Пока ТаблицаРасчетнаяМасса.ПолучитьСтроку()=1 Цикл Объем=""+ТаблицаРасчетнаяМасса.Масса+" кг"; стрНомВертСекции= "ВертСекция_1"; стрВыводимСекция="ТаблицаСтоимость|"+стрНомВертСекции; Таб.ПрисоединитьСекцию(стрВыводимСекция); КонецЦикла; ТипЦены="Нерентабельно"; Масса=0; Себистоимость=0; Кол_квМТиража=0; КолПогонМетровТиража=0; ТаблицаРасчетнаяМасса.ВыбратьСтроки(); ТаблицаРасчетнаяМасса.ПолучитьСтроку(); Масса=ТаблицаРасчетнаяМасса.Масса; Себистоимость=ТаблицаРасчетнаяМасса.Себистоимость; Наценка=ТаблицаРасчетнаяМасса.НеРентабельно; Стоимость=ТаблицаРасчетнаяМасса.ПродСтоимостьНеРентабельно; СтоимостьБезКлише=Стоимость-СебистоимостьПечатныхФормТекЗаказчика; Если (Масса=0) Тогда ЦенаЗа1КГ= 0; ЦенаЗа1КГБезКлише= 0; Иначе ЦенаЗа1КГ= Стоимость/Масса; ЦенаЗа1КГБезКлише= СтоимостьБезКлише/Масса; КонецЕсли; стрЦена=""+Окр(ЦенаЗа1КГ,2,1); стрЦенаБезКлише=""+Окр(ЦенаЗа1КГБезКлише,2,1); стрНомВертСекции= "Назв_Строк"; стрЦенаЗаголовок="Цена за 1 кг."; стрВыводимСекция="Стоимость|"+стрНомВертСекции; Таб.ВывестиСекцию(стрВыводимСекция); Пока ТаблицаРасчетнаяМасса.ПолучитьСтроку()=1 Цикл Масса=ТаблицаРасчетнаяМасса.Масса; Себистоимость=ТаблицаРасчетнаяМасса.Себистоимость; Наценка=ТаблицаРасчетнаяМасса.НеРентабельно; Стоимость=ТаблицаРасчетнаяМасса.ПродСтоимостьНеРентабельно; СтоимостьБезКлише=Стоимость-СебистоимостьПечатныхФормТекЗаказчика; Если (Масса=0) Тогда ЦенаЗа1КГ= 0; ЦенаЗа1КГБезКлише= 0; Иначе ЦенаЗа1КГ= Стоимость/Масса; ЦенаЗа1КГБезКлише= СтоимостьБезКлише/Масса; КонецЕсли; стрЦена=""+Окр(ЦенаЗа1КГ,2,1); стрЦенаБезКлише=""+Окр(ЦенаЗа1КГБезКлише,2,1); стрНомВертСекции= "ВертСекция_1"; стрВыводимСекция="Стоимость|"+стрНомВертСекции; Таб.ПрисоединитьСекцию(стрВыводимСекция); КонецЦикла; ТипЦены="Прибыльно"; Масса=0; Себистоимость=0; Кол_квМТиража=0; КолПогонМетровТиража=0; ТаблицаРасчетнаяМасса.ВыбратьСтроки(); ТаблицаРасчетнаяМасса.ПолучитьСтроку(); Масса=ТаблицаРасчетнаяМасса.Масса; Себистоимость=ТаблицаРасчетнаяМасса.Себистоимость; Наценка=ТаблицаРасчетнаяМасса.Прибыльно; Стоимость=ТаблицаРасчетнаяМасса.ПродСтоимостьПрибыльно; СтоимостьБезКлише=Стоимость-СебистоимостьПечатныхФормТекЗаказчика; Если (Масса=0) Тогда ЦенаЗа1КГ= 0; ЦенаЗа1КГБезКлише= 0; Иначе ЦенаЗа1КГ= Стоимость/Масса; ЦенаЗа1КГБезКлише= СтоимостьБезКлише/Масса; КонецЕсли; стрЦена=""+Окр(ЦенаЗа1КГ,2,1); стрЦенаБезКлише=""+Окр(ЦенаЗа1КГБезКлише,2,1); стрНомВертСекции= "Назв_Строк"; стрВыводимСекция="Стоимость|"+стрНомВертСекции; Таб.ВывестиСекцию(стрВыводимСекция); Пока ТаблицаРасчетнаяМасса.ПолучитьСтроку()=1 Цикл Масса=ТаблицаРасчетнаяМасса.Масса; Себистоимость=ТаблицаРасчетнаяМасса.Себистоимость; Наценка=ТаблицаРасчетнаяМасса.Прибыльно; Стоимость=ТаблицаРасчетнаяМасса.ПродСтоимостьПрибыльно; СтоимостьБезКлише=Стоимость-СебистоимостьПечатныхФормТекЗаказчика; Если (Масса=0) Тогда ЦенаЗа1КГ= 0; ЦенаЗа1КГБезКлише= 0; Иначе ЦенаЗа1КГ= Стоимость/Масса; ЦенаЗа1КГБезКлише= СтоимостьБезКлише/Масса; КонецЕсли; стрЦена=""+Окр(ЦенаЗа1КГ,2,1); стрЦенаБезКлише=""+Окр(ЦенаЗа1КГБезКлише,2,1); стрНомВертСекции= "ВертСекция_1"; стрВыводимСекция="Стоимость|"+стрНомВертСекции; Таб.ПрисоединитьСекцию(стрВыводимСекция); КонецЦикла; ТипЦены="Премиально"; Масса=0; Себистоимость=0; Кол_квМТиража=0; КолПогонМетровТиража=0; ТаблицаРасчетнаяМасса.ВыбратьСтроки(); ТаблицаРасчетнаяМасса.ПолучитьСтроку(); Масса=ТаблицаРасчетнаяМасса.Масса; Себистоимость=ТаблицаРасчетнаяМасса.Себистоимость; Наценка=ТаблицаРасчетнаяМасса.Премиально; Стоимость=ТаблицаРасчетнаяМасса.ПродСтоимостьПремиально; СтоимостьБезКлише=Стоимость-СебистоимостьПечатныхФормТекЗаказчика; Если (Масса=0) Тогда ЦенаЗа1КГ= 0; ЦенаЗа1КГБезКлише= 0; Иначе ЦенаЗа1КГ= Стоимость/Масса; ЦенаЗа1КГБезКлише= СтоимостьБезКлише/Масса; КонецЕсли; стрЦена=""+Окр(ЦенаЗа1КГ,2,1); стрЦенаБезКлише=""+Окр(ЦенаЗа1КГБезКлише,2,1); стрНомВертСекции= "Назв_Строк"; стрВыводимСекция="Стоимость|"+стрНомВертСекции; Таб.ВывестиСекцию(стрВыводимСекция); Пока ТаблицаРасчетнаяМасса.ПолучитьСтроку()=1 Цикл Масса=ТаблицаРасчетнаяМасса.Масса; Себистоимость=ТаблицаРасчетнаяМасса.Себистоимость; Наценка=ТаблицаРасчетнаяМасса.Премиально; Стоимость=ТаблицаРасчетнаяМасса.ПродСтоимостьПремиально; СтоимостьБезКлише=Стоимость-СебистоимостьПечатныхФормТекЗаказчика; Если (Масса=0) Тогда ЦенаЗа1КГ= 0; ЦенаЗа1КГБезКлише= 0; Иначе ЦенаЗа1КГ= Стоимость/Масса; ЦенаЗа1КГБезКлише= СтоимостьБезКлише/Масса; КонецЕсли; стрЦена=""+Окр(ЦенаЗа1КГ,2,1); стрЦенаБезКлише=""+Окр(ЦенаЗа1КГБезКлише,2,1); стрНомВертСекции= "ВертСекция_1"; стрВыводимСекция="Стоимость|"+стрНомВертСекции; Таб.ПрисоединитьСекцию(стрВыводимСекция); ы=ы+1; КонецЦикла; КонецЕсли; Если фЦеныПродукцииВшт=1 Тогда Таб.ВывестиСекцию("ПустаяСекция"); стрЗаг="Цена за 1 тыс.шт. готовой продукции" ; Таб.ВывестиСекцию("ЗаголовокТаблицыСтоимость"); ТаблицаРасчетнаяМасса.ВыбратьСтроки(); ТаблицаРасчетнаяМасса.ПолучитьСтроку(); Объем=""+ТаблицаРасчетнаяМасса.Тираж+" тыс.шт."; стрНомВертСекции= "Назв_Строк"; стрВыводимСекция="ТаблицаСтоимость|"+стрНомВертСекции; Таб.ВывестиСекцию(стрВыводимСекция); Пока ТаблицаРасчетнаяМасса.ПолучитьСтроку()=1 Цикл Объем=""+ТаблицаРасчетнаяМасса.Тираж+" тыс.шт."; стрНомВертСекции= "ВертСекция_1"; стрВыводимСекция="ТаблицаСтоимость|"+стрНомВертСекции; Таб.ПрисоединитьСекцию(стрВыводимСекция); КонецЦикла; ТипЦены="Нерентабельно"; Масса=0; Себистоимость=0; Кол_квМТиража=0; КолПогонМетровТиража=0; стрНомВертСекции= "Назв_Строк"; стрЦенаЗаголовок="Цена за 1 тыс.шт."; ТаблицаРасчетнаяМасса.ВыбратьСтроки(); ТаблицаРасчетнаяМасса.ПолучитьСтроку(); Масса=ТаблицаРасчетнаяМасса.Масса; Тираж=ТаблицаРасчетнаяМасса.Тираж; Себистоимость=ТаблицаРасчетнаяМасса.Себистоимость; Наценка=ТаблицаРасчетнаяМасса.НеРентабельно; Стоимость=ТаблицаРасчетнаяМасса.ПродСтоимостьНеРентабельно; СтоимостьБезКлише=Стоимость-СебистоимостьПечатныхФормТекЗаказчика; Если (Тираж=0) Тогда ЦенаЗа1000ШТ=0; ЦенаЗа1000ШТБезКлише=0; Иначе ЦенаЗа1000ШТ=Стоимость/Тираж; ЦенаЗа1000ШТБезКлише=СтоимостьБезКлише/Тираж; КонецЕсли; стрЦена=""+Окр(ЦенаЗа1000ШТ,2,1); стрЦенаБезКлише=""+Окр(ЦенаЗа1000ШТБезКлише,2,1); стрВыводимСекция="Стоимость|"+стрНомВертСекции; Таб.ВывестиСекцию(стрВыводимСекция); Пока ТаблицаРасчетнаяМасса.ПолучитьСтроку()=1 Цикл Масса=ТаблицаРасчетнаяМасса.Масса; Тираж=ТаблицаРасчетнаяМасса.Тираж; Себистоимость=ТаблицаРасчетнаяМасса.Себистоимость; Наценка=ТаблицаРасчетнаяМасса.НеРентабельно; Стоимость=ТаблицаРасчетнаяМасса.ПродСтоимостьНеРентабельно; СтоимостьБезКлише=Стоимость-СебистоимостьПечатныхФормТекЗаказчика; Если (Тираж=0) Тогда ЦенаЗа1000ШТ=0; ЦенаЗа1000ШТБезКлише=0; Иначе ЦенаЗа1000ШТ=Стоимость/Тираж; ЦенаЗа1000ШТБезКлише=СтоимостьБезКлише/Тираж; КонецЕсли; стрЦена=""+Окр(ЦенаЗа1000ШТ,2,1); стрЦенаБезКлише=""+Окр(ЦенаЗа1000ШТБезКлише,2,1); стрНомВертСекции= "ВертСекция_1"; стрВыводимСекция="Стоимость|"+стрНомВертСекции; Таб.ПрисоединитьСекцию(стрВыводимСекция); КонецЦикла; ТипЦены="Прибыльно"; Масса=0; Себистоимость=0; Кол_квМТиража=0; КолПогонМетровТиража=0; ТаблицаРасчетнаяМасса.ВыбратьСтроки(); ТаблицаРасчетнаяМасса.ПолучитьСтроку(); Масса=ТаблицаРасчетнаяМасса.Масса; Тираж=ТаблицаРасчетнаяМасса.Тираж; Себистоимость=ТаблицаРасчетнаяМасса.Себистоимость; Наценка=ТаблицаРасчетнаяМасса.Прибыльно; Стоимость=ТаблицаРасчетнаяМасса.ПродСтоимостьПрибыльно; СтоимостьБезКлише=Стоимость-СебистоимостьПечатныхФормТекЗаказчика; Если (Тираж=0) Тогда ЦенаЗа1000ШТ=0; ЦенаЗа1000ШТБезКлише=0; Иначе ЦенаЗа1000ШТ=Стоимость/Тираж; ЦенаЗа1000ШТБезКлише=СтоимостьБезКлише/Тираж; КонецЕсли; стрЦена=""+Окр(ЦенаЗа1000ШТ,2,1); стрЦенаБезКлише=""+Окр(ЦенаЗа1000ШТБезКлише,2,1); стрНомВертСекции= "Назв_Строк"; стрВыводимСекция="Стоимость|"+стрНомВертСекции; Таб.ВывестиСекцию(стрВыводимСекция); Пока ТаблицаРасчетнаяМасса.ПолучитьСтроку()=1 Цикл Масса=ТаблицаРасчетнаяМасса.Масса; Тираж=ТаблицаРасчетнаяМасса.Тираж; Себистоимость=ТаблицаРасчетнаяМасса.Себистоимость; Наценка=ТаблицаРасчетнаяМасса.Прибыльно; Стоимость=ТаблицаРасчетнаяМасса.ПродСтоимостьПрибыльно; СтоимостьБезКлише=Стоимость-СебистоимостьПечатныхФормТекЗаказчика; Если (Тираж=0) Тогда ЦенаЗа1000ШТ=0; ЦенаЗа1000ШТБезКлише=0; Иначе ЦенаЗа1000ШТ=Стоимость/Тираж; ЦенаЗа1000ШТБезКлише=СтоимостьБезКлише/Тираж; КонецЕсли; стрЦена=""+Окр(ЦенаЗа1000ШТ,2,1); стрЦенаБезКлише=""+Окр(ЦенаЗа1000ШТБезКлише,2,1); стрНомВертСекции= "ВертСекция_1"; стрВыводимСекция="Стоимость|"+стрНомВертСекции; Таб.ПрисоединитьСекцию(стрВыводимСекция); КонецЦикла; ТипЦены="Премиально"; Масса=0; Себистоимость=0; Кол_квМТиража=0; КолПогонМетровТиража=0; ТаблицаРасчетнаяМасса.ВыбратьСтроки(); ТаблицаРасчетнаяМасса.ПолучитьСтроку(); Масса=ТаблицаРасчетнаяМасса.Масса; Тираж=ТаблицаРасчетнаяМасса.Тираж; Себистоимость=ТаблицаРасчетнаяМасса.Себистоимость; Наценка=ТаблицаРасчетнаяМасса.Премиально; Стоимость=ТаблицаРасчетнаяМасса.ПродСтоимостьПремиально; СтоимостьБезКлише=Стоимость-СебистоимостьПечатныхФормТекЗаказчика; Если (Тираж=0) Тогда ЦенаЗа1000ШТ=0; ЦенаЗа1000ШТБезКлише=0; Иначе ЦенаЗа1000ШТ=Стоимость/Тираж; ЦенаЗа1000ШТБезКлише=СтоимостьБезКлише/Тираж; КонецЕсли; стрЦена=""+Окр(ЦенаЗа1000ШТ,2,1); стрЦенаБезКлише=""+Окр(ЦенаЗа1000ШТБезКлише,2,1); стрНомВертСекции= "Назв_Строк"; стрВыводимСекция="Стоимость|"+стрНомВертСекции; Таб.ВывестиСекцию(стрВыводимСекция); Пока ТаблицаРасчетнаяМасса.ПолучитьСтроку()=1 Цикл Масса=ТаблицаРасчетнаяМасса.Масса; Тираж=ТаблицаРасчетнаяМасса.Тираж; Себистоимость=ТаблицаРасчетнаяМасса.Себистоимость; Наценка=ТаблицаРасчетнаяМасса.Премиально; Стоимость=ТаблицаРасчетнаяМасса.ПродСтоимостьПремиально; СтоимостьБезКлише=Стоимость-СебистоимостьПечатныхФормТекЗаказчика; Если (Тираж=0) Тогда ЦенаЗа1000ШТ=0; ЦенаЗа1000ШТБезКлише=0; Иначе ЦенаЗа1000ШТ=Стоимость/Тираж; ЦенаЗа1000ШТБезКлише=СтоимостьБезКлише/Тираж; КонецЕсли; стрЦена=""+Окр(ЦенаЗа1000ШТ,2,1); стрЦенаБезКлише=""+Окр(ЦенаЗа1000ШТБезКлише,2,1); стрНомВертСекции= "ВертСекция_1"; стрВыводимСекция="Стоимость|"+стрНомВертСекции; Таб.ПрисоединитьСекцию(стрВыводимСекция); КонецЦикла; Таб.ВывестиСекцию("ПустаяСекция"); СреднийВесТысячиШтук=НормыРасчета.СредныйВес1ТысячиВсехДизайнов(); Таб.ВывестиСекцию("ВесТысячиШтук"); КонецЕсли; Если (фПечать=0)И(фПакетоделание=0)И(фБабинорезка=0) И (фЛаминация=1)Тогда //только одна ламинация Таб.ВывестиСекцию("ПустаяСекция"); ТаблицаРасчетнаяМасса.ВыбратьСтроки(); ТаблицаРасчетнаяМасса.ПолучитьСтроку(); Объем=""+ТаблицаРасчетнаяМасса.Масса+" кг"; стрНомВертСекции= "Назв_Строк"; стрВыводимСекция="ШапкаМетры|"+стрНомВертСекции; Таб.ВывестиСекцию(стрВыводимСекция); Пока ТаблицаРасчетнаяМасса.ПолучитьСтроку()=1 Цикл Объем=""+ТаблицаРасчетнаяМасса.Масса+" кг"; стрНомВертСекции= "ВертСекция_1"; стрВыводимСекция="ШапкаМетры|"+стрНомВертСекции; Таб.ПрисоединитьСекцию(стрВыводимСекция); КонецЦикла; ОбщаяРасчетнаяТаблицаЗаказа=ОбщаяРасчетнаяТаблица; ОбщаяРасчетнаяТаблицаЗаказа.ВыбратьСтроки(); ОбщаяРасчетнаяТаблицаЗаказа.ПолучитьСтроку(); ПогонМетры=""+Окр(ОбщаяРасчетнаяТаблицаЗаказа.КолПогонМетровТиража,4,1); стрНомВертСекции= "Назв_Строк"; стрВыводимСекция="Метры|"+стрНомВертСекции; Таб.ВывестиСекцию(стрВыводимСекция); Пока ОбщаяРасчетнаяТаблицаЗаказа.ПолучитьСтроку()=1 Цикл ПогонМетры=""+Окр(ОбщаяРасчетнаяТаблицаЗаказа.КолПогонМетровТиража,4,1); стрНомВертСекции= "ВертСекция_1"; стрВыводимСекция="Метры|"+стрНомВертСекции; Таб.ПрисоединитьСекцию(стрВыводимСекция); КонецЦикла; КонецЕсли; Таб.ВывестиСекцию("ПустаяСекция"); КонецЦикла; Портрет=1; Ландшафт=2 ; Ориентация=Ландшафт; Таб.ПараметрыСтраницы(Ориентация); Таб.Защита(0); Таб.ТолькоПросмотр(1); Таб.Показать("Карта расчета заказа",""); КонецПроцедуры //------------------------------------------------------------------------------------------------------------ Процедура ПечатьИзменений() Таб = СоздатьОбъект("Таблица"); Таб.ИсходнаяТаблица("ПечатьИзменений"); Таб.ВывестиСекцию("Шапка"); тбИсторияДокумента.ВыбратьСтроки(); Пока тбИсторияДокумента.ПолучитьСтроку()=1 Цикл ТекПользователь=""+тбИсторияДокумента.Пользователь; ДатаИзменения=""+тбИсторияДокумента.ДатаИзменения; ВремяИзменения=""+тбИсторияДокумента.ВремяИзменения; Атрибут=""+тбИсторияДокумента.Атрибут; Действие=""+тбИсторияДокумента.Действие; Таб.ВывестиСекцию("Строка"); КонецЦикла; Таб.Опции(0,0,0,0); Таб.Защита(1); Таб.ТолькоПросмотр(1); Таб.Показать("История изменений",""); КонецПроцедуры //------------------------------------------------------------------------------------------------------------ Процедура ПослеОткрытия() Если Выбран()=1 Тогда РасширениеФормы.СбросМодифицированности(); КонецЕсли; КонецПроцедуры //------------------------------------------------------------------------------------------------------------ Процедура ПослеЗакрытия() глСервис.УдалитьШрифт(ШрифтTimesNORMAL); глСервис.УдалитьШрифт(ШрифтДляКнопокТолстый); глСервис.УдалитьШрифт(ШрифтДляКнопокТонкий); глСервис.УдалитьШрифт(ШрифтTimesBOLD); КонецПроцедуры //------------------------------------------------------------------------------------------------------------ Процедура СоздатьКнопки(КоманднаяПанель) КоманднаяПанель.Очистить(); Пиктограммы=ПутьККаталогуКартинок+"ПанельЖурнала.bmp"; КвоКартинокПоУмолчание=КоманднаяПанель.КоличествоКартинок; КоманднаяПанель.ДобавитьПиктограммыВКоллекцию(Пиктограммы,38); Кнопка = КоманднаяПанель.Кнопка("Добавить",,,КвоКартинокПоУмолчание+1,"ДобавитьСтроку",); Кнопка.Подсказка = "Добавить новую строку"; КоманднаяПанель.Добавить(Кнопка); Кнопка = КоманднаяПанель.Кнопка("Изменить",,,КвоКартинокПоУмолчание+2,"ИзменитьСтроку"); Кнопка.Подсказка = "Изменить текущую строку"; КоманднаяПанель.Добавить(Кнопка); Кнопка = КоманднаяПанель.Кнопка("Копировать",,,КвоКартинокПоУмолчание+3,"СкопироватьСтроку",); Кнопка.Подсказка = "Копировать текущую строку"; КоманднаяПанель.Добавить(Кнопка); Кнопка = КоманднаяПанель.Кнопка("Удалить",,,КвоКартинокПоУмолчание+4,"УдалитьСтроку"); Кнопка.Подсказка = "Удалить текущую строку"; КоманднаяПанель.Добавить(Кнопка); КоманднаяПанель.Добавить(КоманднаяПанель.Кнопка("Разделитель_1",4)); КоманднаяПанель.Обновить(); КонецПроцедуры //====================================================================== Процедура СоздатьПДИТДляОбъема() ПДИТОбъем = СоздатьОбъект("ПоставщикДанных"); ПДИТОбъем.ТипЗначений = "ИндексированнаяТаблица"; ПДИТОбъем.КонтейнерТабличногоПоля = "ТПОбъем_"; ПДИТОбъем.КонтейнерКоманднойПанели = "КПОбъем_"; КоманднаяПанель=ПДИТОбъем.ТабличноеПоле.КоманднаяПанель; КоманднаяПанель.Очистить(); Пиктограммы=ПутьККаталогуКартинок+"ПанельЖурнала.bmp"; КвоКартинокПоУмолчание=КоманднаяПанель.КоличествоКартинок; КоманднаяПанель.ДобавитьПиктограммыВКоллекцию(Пиктограммы,38); //кнопка Добавить Кнопка = КоманднаяПанель.Кнопка("Добавить",,,КвоКартинокПоУмолчание+1,"ДобавитьСтроку"); Кнопка.Подсказка = "Добавить новую строку"; КоманднаяПанель.Добавить(Кнопка); //кнопка Изменить Кнопка = КоманднаяПанель.Кнопка("Изменить",,,КвоКартинокПоУмолчание+2,"ИзменитьСтроку"); Кнопка.Подсказка = "Изменить текущую строку"; КоманднаяПанель.Добавить(Кнопка); //кнопка Удалить Кнопка = КоманднаяПанель.Кнопка("Удалить",,,КвоКартинокПоУмолчание+4,"УдалитьСтроку"); Кнопка.Подсказка = "Удалить текущую строку"; КоманднаяПанель.Добавить(Кнопка); КоманднаяПанель.Добавить(КоманднаяПанель.Кнопка("Разделитель_1",4)); КоманднаяПанель.Обновить(); Данные = ПДИТОбъем.Данные; Данные.НоваяКолонка("Масса","Число",15,4,"Масса (кг.)",100); Данные.НоваяКолонка("Тираж","Число",15,4,"Тираж (тыс.шт.)",100); Данные.ИзменятьПорядокСтрок=0; Данные.ВыводНаПечать=0; Данные.ИзменятьПозициюКолонок=0; Данные.ИзменятьНастройкуКолонок=0; Колонки=Данные.Колонки; Для НомерЗначения=0 По (Колонки.Количество()-1) Цикл ОтборРеквизита = Колонки.Получить(НомерЗначения); ОтборРеквизита.ШрифтЗаголовка=ШрифтЗаголовка; КонецЦикла; ПДИТОбъем.ТабличноеПоле.АвтоШирина(); КонецПроцедуры // СоздатьПДИТДляОбъема //====================================================================== Процедура СоздатьПДИТДляМенеджера() ПДИТМенеджер = СоздатьОбъект("ПоставщикДанных"); ПДИТМенеджер.ТипЗначений = "ИндексированнаяТаблица"; ПДИТМенеджер.КонтейнерТабличногоПоля = "ТПМенеджер_"; ПДИТМенеджер.КонтейнерКоманднойПанели = "КПМенеджер_"; КоманднаяПанель=ПДИТМенеджер.ТабличноеПоле.КоманднаяПанель; СоздатьКнопки(КоманднаяПанель); Данные = ПДИТМенеджер.Данные; Данные.НоваяКолонка("Код","Строка",9,,"Код",40); Данные.НоваяКолонка("Дизайн","Справочник.ТМЦ",,,"Название",100); Данные.НоваяКолонка("ВысотаДизайна","Число",10,2,"Высота",40); Данные.НоваяКолонка("ШиринаДизайна","Число",10,2,"Ширина",40); Данные.НоваяКолонка("СостояниеДизайна","Перечисление.СостояниеДизайна",,,"Состояние",40); Данные.НоваяКолонка("ОбъемДизайна","Срока",50,,"Объем дизайна",40); Данные.НоваяКолонка("НомерСтрокиДокумента","Число",10,0); Данные.ИзменятьПорядокСтрок=0; Данные.ВыводНаПечать=0; Данные.ИзменятьПозициюКолонок=0; Данные.ИзменятьНастройкуКолонок=0; НаборПрав=НазваниеНабораПрав(); ИзменятьСоставСтрок=1; Если Форма.ТолькоПросмотр()=1 Тогда ИзменятьСоставСтрок=0; ИначеЕсли Проведен()=1 Тогда ИзменятьСоставСтрок=0; ИначеЕсли ЗакрытьДоступ=1 Тогда ИзменятьСоставСтрок=0; ИначеЕсли тбКонтрагенты.КоличествоСтрок()=0 Тогда ИзменятьСоставСтрок=0; Иначе Если (НаборПрав="Администратор")Тогда ЗакрытьДоступСтраницаМенеджер=0; ИначеЕсли (НаборПрав="ГлавныйЭкономист") Тогда ЗакрытьДоступСтраницаМенеджер=0; ИначеЕсли (фПодписьМенеджера=1) Тогда ЗакрытьДоступСтраницаМенеджер=1; Иначе ЗакрытьДоступСтраницаМенеджер=0; КонецЕсли; Если ЗакрытьДоступСтраницаМенеджер=1 Тогда ИзменятьСоставСтрок=0; КонецЕсли; КонецЕсли; Данные.ИзменятьСоставСтрок=ИзменятьСоставСтрок; Колонки=Данные.Колонки; Колонки.НомерСтрокиДокумента.Видимость=0; Для НомерЗначения=0 По (Колонки.Количество()-1) Цикл ОтборРеквизита = Колонки.Получить(НомерЗначения); ОтборРеквизита.ШрифтЗаголовка=ШрифтЗаголовка; КонецЦикла; Данные.ВосстановитьПозициюКолонок(); КонецПроцедуры // СоздатьПДИТДляМенеджера //====================================================================== Процедура СоздатьПДИТДляТехнолога() ПДИнТбТехнолог = СоздатьОбъект("ПоставщикДанных"); ПДИнТбТехнолог.ТипЗначений = "ИндексированнаяТаблица"; ПДИнТбТехнолог.КонтейнерТабличногоПоля = "ТПТехнолог_"; Данные = ПДИнТбТехнолог.Данные; Данные.НоваяКолонка("Код","Строка",9,,"Код",2); Данные.НоваяКолонка("Дизайн","Справочник.ТМЦ",,,"Название",65); Данные.НоваяКолонка("ШагПечати","Число",10,2,"Шаг Печати",3); Данные.НоваяКолонка("ШиринаДорожки","Число",10,2,"Ширина Дорожки",3); Данные.НоваяКолонка("ВысотаДизайна","Число",10,2,"Высота",3); Данные.НоваяКолонка("ШиринаДизайна","Число",10,2,"Ширина",3); Данные.НоваяКолонка("КолДорожек","Число",3,0,"К-во дорожек",3); Данные.НоваяКолонка("РазверткаДизайна","Число",10,0,"Развертка Дизайна",3); Данные.НоваяКолонка("БоковаяЗакладка","Число",10,2,"Бок.закладка",3); Данные.НоваяКолонка("НижняяЗакладка","Число",10,2,"Ниж.закладка",3); Данные.НоваяКолонка("ВерхняяЗакладка","Число",10,2,"Верх. закладка",3); Данные.НоваяКолонка("ШиринаРучки","Число",10,2,"Ширина ручки",3); Данные.НоваяКолонка("ДлинаРучки","Число",10,2,"Длина ручки",3); Данные.НоваяКолонка("ТипПакета","Перечисление.ТипыПакетов",,,"Тип Пакета",5); Данные.НоваяКолонка("ТипРучки","Перечисление.ТипыРучек",,,"Тип Ручки",3); Данные.НоваяКолонка("СостояниеДизайна","Перечисление.СостояниеДизайна",,,"Состояние",5); Данные.НоваяКолонка("РисунокДизайна","Справочник.Дизайны",,,"Рисунок дизайна",5); Данные.ИзменятьПорядокСтрок=0; Данные.ВыводНаПечать=0; Данные.ИзменятьПозициюКолонок=0; Данные.ИзменятьНастройкуКолонок=0; НаборПрав=НазваниеНабораПрав(); ИзменятьСоставСтрок=1; Если Форма.ТолькоПросмотр()=1 Тогда ИзменятьСоставСтрок=0; ИначеЕсли Проведен()=1 Тогда ИзменятьСоставСтрок=0; ИначеЕсли ЗакрытьДоступ=1 Тогда ИзменятьСоставСтрок=0; ИначеЕсли тбКонтрагенты.КоличествоСтрок()=0 Тогда ИзменятьСоставСтрок=0; Иначе Если (НаборПрав="Администратор")Тогда ЗакрытьДоступКТехнологичПолям=0; ИначеЕсли (НаборПрав="ГлавныйЭкономист") Тогда ЗакрытьДоступКТехнологичПолям=0; ИначеЕсли (фПодписьТехнолога=1) Тогда ЗакрытьДоступКТехнологичПолям=1; Иначе ЗакрытьДоступКТехнологичПолям=0; КонецЕсли; Если ЗакрытьДоступКТехнологичПолям=1 Тогда ИзменятьСоставСтрок=0; КонецЕсли; КонецЕсли; Данные.ИзменятьСоставСтрок=ИзменятьСоставСтрок; Колонки=Данные.Колонки; Если фПакетоделание=0 Тогда Колонки.БоковаяЗакладка.Видимость=0; Колонки.НижняяЗакладка.Видимость=0; Колонки.ВерхняяЗакладка.Видимость=0; Колонки.ТипПакета.Видимость=0; Колонки.ТипРучки.Видимость=0; Иначе Колонки.БоковаяЗакладка.Видимость=1; Колонки.НижняяЗакладка.Видимость=1; Колонки.ВерхняяЗакладка.Видимость=1; Колонки.ТипПакета.Видимость=1; Колонки.ТипРучки.Видимость=1; КонецЕсли; Колонки.ШагПечати.Видимость=0; Колонки.ШиринаДорожки.Видимость=0; Колонки.ШиринаРучки.Видимость=0; Колонки.ДлинаРучки.Видимость=0; Колонки.РисунокДизайна.Видимость=0; Для НомерЗначения=0 По (Колонки.Количество()-1) Цикл ОтборРеквизита = Колонки.Получить(НомерЗначения); ОтборРеквизита.ШрифтЗаголовка=ШрифтЗаголовка; КонецЦикла; ИТЗТехнолог=ПДИнТбТехнолог.Данные.ИндексированнаяТаблица; ИТЗТехнолог.УдалитьСтроки(); ВыбратьСтроки(); Пока ПолучитьСтроку()=1 Цикл ИТЗТехнолог.НоваяСтрока(); ИТЗТехнолог.Код=Дизайн.Код; ИТЗТехнолог.Дизайн=Дизайн; ИТЗТехнолог.ШагПечати=ШагПечати; ИТЗТехнолог.ШиринаДорожки=ШиринаДорожки; ИТЗТехнолог.ВысотаДизайна=ВысотаДизайна; ИТЗТехнолог.ШиринаДизайна=ШиринаДизайна; ИТЗТехнолог.КолДорожек=КолДорожек; ИТЗТехнолог.БоковаяЗакладка=БоковаяЗакладка; ИТЗТехнолог.НижняяЗакладка=НижняяЗакладка; ИТЗТехнолог.ВерхняяЗакладка=ВерхняяЗакладка; ИТЗТехнолог.ШиринаРучки=ШиринаРучки; ИТЗТехнолог.ДлинаРучки=ДлинаРучки; ИТЗТехнолог.ТипПакета=ТипПакета; ИТЗТехнолог.ТипРучки=ТипРучки; ИТЗТехнолог.СостояниеДизайна=СостояниеДизайна; ИТЗТехнолог.РазверткаДизайна=РазверткаДизайна; ИТЗТехнолог.РисунокДизайна=РисунокДизайна; КонецЦикла; Данные.ВосстановитьПозициюКолонок(); ПДИТКраски = СоздатьОбъект("ПоставщикДанных"); ПДИТКраски.ТипЗначений = "ИндексированнаяТаблица"; ПДИТКраски.КонтейнерТабличногоПоля = "ТПКраски_"; ПДИТКраски.КонтейнерКоманднойПанели = "КПКраски_"; КоманднаяПанель=ПДИТКраски.ТабличноеПоле.КоманднаяПанель; СоздатьКнопки(КоманднаяПанель); Данные = ПДИТКраски.Данные; Данные.ИзменятьПорядокСтрок=0; Данные.ВыводНаПечать=0; Данные.ИзменятьНастройкуКолонок=0; Данные.ИзменятьПозициюКолонок=0; ПереченьНаборовПрав="Администратор,Технолог,ТехнологНикатор"; Если Найти(ПереченьНаборовПрав,НаборПрав)=0 Тогда Данные.РазрешитьНачалоПеретаскивания=0; Данные.РазрешитьПеретаскивание=0; Данные.РежимВыделения=0; Иначе Данные.РазрешитьНачалоПеретаскивания=1; Данные.РазрешитьПеретаскивание=1; Данные.РежимВыделения=1; КонецЕсли; ИзменятьСоставСтрок=1; Если Форма.ТолькоПросмотр()=1 Тогда ИзменятьСоставСтрок=0; ИначеЕсли Проведен()=1 Тогда ИзменятьСоставСтрок=0; ИначеЕсли ЗакрытьДоступ=1 Тогда ИзменятьСоставСтрок=0; Иначе Если (НаборПрав="Администратор")Тогда ЗакрытьДоступКТехнологичПолям=0; ИначеЕсли (НаборПрав="ГлавныйЭкономист") Тогда ЗакрытьДоступКТехнологичПолям=0; ИначеЕсли (фПодписьТехнолога=1) Тогда ЗакрытьДоступКТехнологичПолям=1; Иначе ЗакрытьДоступКТехнологичПолям=0; КонецЕсли; Если ЗакрытьДоступКТехнологичПолям=1 Тогда ИзменятьСоставСтрок=0; КонецЕсли; КонецЕсли; Данные.ИзменятьСоставСтрок=ИзменятьСоставСтрок; Если ИзменятьСоставСтрок=0 Тогда Кнопки=КоманднаяПанель.Кнопки; Для НомерЗначения=0 По (Кнопки.Количество()-1) Цикл ОтборРеквизита = Кнопки.Получить(НомерЗначения); ОтборРеквизита.Доступность=ИзменятьСоставСтрок; КонецЦикла; КонецЕсли; списокАнилоксов=ВернутьАнилоксы(ПечатнаяМашина); Данные.НоваяКолонка("Краска","Справочник.ПоизводственныеМатериалы",,,"Краски",8); Данные.НоваяКолонка("ПроцентЗапечатки","Число",4,0,"% запечатки",5); Данные.НоваяКолонка("КвоФотоФорм","Число",4,0,"Кол-во ф.форм",5); Данные.НоваяКолонка("ПроцентСвязующего","Число",2,0,"% Связующего",5); Данные.НоваяКолонка("Цена","Число",10,2,"Цена",3); Данные.НоваяКолонка("Анилокс","СписокЗначений",списокАнилоксов,,"Анилокс",5); Колонки=Данные.Колонки; Для НомерЗначения=0 По (Колонки.Количество()-1) Цикл ОтборРеквизита = Колонки.Получить(НомерЗначения); ОтборРеквизита.ШрифтЗаголовка=ШрифтЗаголовка; КонецЦикла; Данные.ВосстановитьПозициюКолонок(); ПДИнТбТехнолог.Обновить(); КонецПроцедуры // СоздатьПДИТДляТехнолога //====================================================================== Процедура СоздатьПДИТДляТПЛаминаторщика() ПДИнТбЛаминаторщик = СоздатьОбъект("ПоставщикДанных"); ПДИнТбЛаминаторщик.ТипЗначений = "ИндексированнаяТаблица"; ПДИнТбЛаминаторщик.КонтейнерТабличногоПоля = "ТПЛаминация_"; Данные = ПДИнТбЛаминаторщик.Данные; Данные.НоваяКолонка("Код","Строка",9,,"Код",2); Данные.НоваяКолонка("Дизайн","Справочник.ТМЦ",,,"Название",65); Данные.НоваяКолонка("ШагПечати","Число",10,2,"Шаг Печати",3); Данные.НоваяКолонка("ШиринаДорожки","Число",10,2,"Ширина Дорожки",3); Данные.НоваяКолонка("ВысотаДизайна","Число",10,2,"Высота",3); Данные.НоваяКолонка("ШиринаДизайна","Число",10,2,"Ширина",3); Данные.НоваяКолонка("КолДорожек","Число",3,0,"К-во дорожек",3); Данные.НоваяКолонка("РазверткаДизайна","Число",10,0,"Развертка Дизайна",3); Данные.НоваяКолонка("БоковаяЗакладка","Число",10,2,"Бок.закладка",3); Данные.НоваяКолонка("НижняяЗакладка","Число",10,2,"Ниж.закладка",3); Данные.НоваяКолонка("ВерхняяЗакладка","Число",10,2,"Верх. закладка",3); Данные.НоваяКолонка("ШиринаРучки","Число",10,2,"Ширина ручки",3); Данные.НоваяКолонка("ДлинаРучки","Число",10,2,"Длина ручки",3); Данные.НоваяКолонка("ТипПакета","Перечисление.ТипыПакетов",,,"Тип Пакета",5); Данные.НоваяКолонка("ТипРучки","Перечисление.ТипыРучек",,,"Тип Ручки",3); Данные.НоваяКолонка("СостояниеДизайна","Перечисление.СостояниеДизайна",,,"Состояние",5); Данные.НоваяКолонка("РисунокДизайна","Справочник.Дизайны",,,"Рисунок дизайна",5); Данные.ИзменятьПорядокСтрок=0; Данные.ВыводНаПечать=0; Данные.ИзменятьПозициюКолонок=0; Данные.ИзменятьНастройкуКолонок=0; НаборПрав=НазваниеНабораПрав(); ИзменятьСоставСтрок=1; Если Форма.ТолькоПросмотр()=1 Тогда ИзменятьСоставСтрок=0; ИначеЕсли Проведен()=1 Тогда ИзменятьСоставСтрок=0; ИначеЕсли ЗакрытьДоступ=1 Тогда ИзменятьСоставСтрок=0; ИначеЕсли тбКонтрагенты.КоличествоСтрок()=0 Тогда ИзменятьСоставСтрок=0; Иначе Если (фПодписьЛаминаторщика=1) Тогда ЗакрытьДоступКПолям=1; Иначе ЗакрытьДоступКПолям=0; КонецЕсли; Если ЗакрытьДоступКПолям=1 Тогда ИзменятьСоставСтрок=0; КонецЕсли; КонецЕсли; Данные.ИзменятьСоставСтрок=ИзменятьСоставСтрок; Колонки=Данные.Колонки; Если фПакетоделание=0 Тогда Колонки.БоковаяЗакладка.Видимость=0; Колонки.НижняяЗакладка.Видимость=0; Колонки.ВерхняяЗакладка.Видимость=0; Колонки.ТипПакета.Видимость=0; Колонки.ТипРучки.Видимость=0; Иначе Колонки.БоковаяЗакладка.Видимость=1; Колонки.НижняяЗакладка.Видимость=1; Колонки.ВерхняяЗакладка.Видимость=1; Колонки.ТипПакета.Видимость=1; Колонки.ТипРучки.Видимость=1; КонецЕсли; Колонки.ШагПечати.Видимость=0; Колонки.ШиринаДорожки.Видимость=0; Колонки.ШиринаРучки.Видимость=0; Колонки.ДлинаРучки.Видимость=0; Колонки.РисунокДизайна.Видимость=0; Для НомерЗначения=0 По (Колонки.Количество()-1) Цикл ОтборРеквизита = Колонки.Получить(НомерЗначения); ОтборРеквизита.ШрифтЗаголовка=ШрифтЗаголовка; КонецЦикла; ИТЗЛаминаторщик=ПДИнТбЛаминаторщик.Данные.ИндексированнаяТаблица; ИТЗЛаминаторщик.УдалитьСтроки(); ВыбратьСтроки(); Пока ПолучитьСтроку()=1 Цикл ИТЗЛаминаторщик.НоваяСтрока(); ИТЗЛаминаторщик.Код=Дизайн.Код; ИТЗЛаминаторщик.Дизайн=Дизайн; ИТЗЛаминаторщик.ШагПечати=ШагПечати; ИТЗЛаминаторщик.ШиринаДорожки=ШиринаДорожки; ИТЗЛаминаторщик.ВысотаДизайна=ВысотаДизайна; ИТЗЛаминаторщик.ШиринаДизайна=ШиринаДизайна; ИТЗЛаминаторщик.КолДорожек=КолДорожек; ИТЗЛаминаторщик.БоковаяЗакладка=БоковаяЗакладка; ИТЗЛаминаторщик.НижняяЗакладка=НижняяЗакладка; ИТЗЛаминаторщик.ВерхняяЗакладка=ВерхняяЗакладка; ИТЗЛаминаторщик.ШиринаРучки=ШиринаРучки; ИТЗЛаминаторщик.ДлинаРучки=ДлинаРучки; ИТЗЛаминаторщик.ТипПакета=ТипПакета; ИТЗЛаминаторщик.ТипРучки=ТипРучки; ИТЗЛаминаторщик.СостояниеДизайна=СостояниеДизайна; ИТЗЛаминаторщик.РазверткаДизайна=РазверткаДизайна; ИТЗЛаминаторщик.РисунокДизайна=РисунокДизайна; КонецЦикла; Данные.ВосстановитьПозициюКолонок(); ПДИнТбЛаминаторщик.Обновить(); КонецПроцедуры // СоздатьПДИТДляТехнолога //====================================================================== Процедура СоздатьПДПродажа() //для менеджера ПДИТПродажа = СоздатьОбъект("ПоставщикДанных"); ПДИТПродажа.ТипЗначений = "ИндексированнаяТаблица"; ПДИТПродажа.КонтейнерТабличногоПоля = "ТППродажа_"; Данные = ПДИТПродажа.Данные; Данные.АвтоКонтекстноеМеню=0; Данные.ИзменятьПорядокСтрок=0; Данные.ВыводНаПечать=0; Данные.ИзменятьПозициюКолонок=0; Данные.ИзменятьНастройкуКолонок=0; Данные.НоваяКолонка("Контрагент","Справочник",,,"Заказчик"); //Данные.НоваяКолонка("фДругаяСтоимостьФорм","Число",1,0,"Способ расчета"); СписокЗначений=СоздатьОбъект("СписокЗначений"); СписокЗначений.ДобавитьЗначение(0,"В цене"); СписокЗначений.ДобавитьЗначение(1,"Отдельно"); Данные.НоваяКолонка("фДругаяСтоимостьФорм","СписокЗначений",СписокЗначений,0,"Способ расчета"); Данные.НоваяКолонка("СебистоимостьПечатныхФорм","Число",19,4,"Себистоимость Печ.Форм"); Данные.НоваяКолонка("ПродажнаяСтоимостьФорм","Число",19,4,"Стоимость"); Данные.НоваяКолонка("УстановленныйОбъем","Число",19,4,"Объем"); Данные.НоваяКолонка("НестандартныйОбъем","Число",19,4,"Официал.объем"); Данные.НоваяКолонка("УстановленнаяЦенаБезФорм","Число",19,3,"Цена б/ф"); Данные.НоваяКолонка("УстановленнаяЦена","Число",19,3,"Цена с/ф"); Данные.НоваяКолонка("Откат","Число",19,3,"Бонус"); Данные.НоваяКолонка("УстановленнаяЦенаПоДокументам","Число",19,3,"Цена(для док.)"); Данные.НоваяКолонка("РентабельностьЗаказа","Перечисление.Рентабельность",,,"Рентабельность"); Данные.НоваяКолонка("ЗаказВакиля","Документ",,,"КПЗ"); Данные.СтильЗаголовков=0; Данные.СтильАктивногоЗаголовка=0; Колонки=Данные.Колонки; Для НомерЗначения=0 По (Колонки.Количество()-1) Цикл ОтборРеквизита = Колонки.Получить(НомерЗначения); ОтборРеквизита.ШрифтЗаголовка=ШрифтЗаголовка; ОтборРеквизита.ЦветФонаЗаголовка=глПолучитьЦвет(200,200,200); КонецЦикла; Колонки.фДругаяСтоимостьФорм.ИзменениеРазмера=1; ПриНажатииВидимыеКолонкиВТППродажа("кПродажныеЦены"); //ИзмВидимостьКолонокВТППродажныеЦены(); //Данные.ВосстановитьПозициюКолонок(); КонецПроцедуры // СоздатьПДПродажа //====================================================================== Процедура СоздатьПДКонтрагентыПодчДоки() ПДКонтрагентыПодчДоки = СоздатьОбъект("ПоставщикДанных"); ПДКонтрагентыПодчДоки.ТипЗначений = "ИндексированнаяТаблица"; ПДКонтрагентыПодчДоки.КонтейнерТабличногоПоля = "ТПКонтрагентыПодчДоки_"; Данные = ПДКонтрагентыПодчДоки.Данные; Данные.АвтоКонтекстноеМеню=0; Данные.НоваяКолонка("Контрагент","Справочник",,,"Заказчик"); Данные.НоваяКолонка("Менеджер","Справочник",,,"Менеджер"); Данные.НоваяКолонка("ЗаказВакиля","Документ",,,"КПЗ"); Данные.ИзменятьПорядокСтрок=0; Данные.ВыводНаПечать=0; Данные.ИзменятьПозициюКолонок=0; Данные.ИзменятьНастройкуКолонок=0; //ТабличноеПоле.ВертикальныеЛинии=0; //ТабличноеПоле.ГоризонтальныеЛинии=0; //Данные.ОтображатьЗаголовки=0; Данные.РазрешитьНачалоПеретаскивания=0; Данные.РазрешитьПеретаскивание=0; Данные.ТаймаутБыстрогоПоиска=0; Колонки=Данные.Колонки; Данные.СтильЗаголовков=0; Данные.СтильАктивногоЗаголовка=0; Колонки=Данные.Колонки; Для НомерЗначения=0 По (Колонки.Количество()-1) Цикл ОтборРеквизита = Колонки.Получить(НомерЗначения); ОтборРеквизита.ШрифтЗаголовка=ШрифтЗаголовка; ОтборРеквизита.ЦветФонаЗаголовка=глПолучитьЦвет(200,200,200); КонецЦикла; КонецПроцедуры // //====================================================================== Процедура ПослеСозданияФормы() Атр=РасширениеФормы.ПолучитьАтрибут("фНеобходимыеОперации"); Атр.Шрифт=ШрифтTimesNORMAL; Атр=РасширениеФормы.ПолучитьАтрибут("фПараметрыГотовойПродукции"); Атр.Шрифт=ШрифтTimesNORMAL; Атр=РасширениеФормы.ПолучитьАтрибут("фПараметрыИспользуемогоМатериала"); Атр.Шрифт=ШрифтTimesNORMAL; Атр=РасширениеФормы.ПолучитьАтрибут("фОбъемСырья"); Атр.Шрифт=ШрифтTimesNORMAL; Атр=РасширениеФормы.ПолучитьАтрибут("фЦеныПродукцииВкг"); Атр.Шрифт=ШрифтTimesNORMAL; Атр=РасширениеФормы.ПолучитьАтрибут("фЦеныПродукцииВшт"); Атр.Шрифт=ШрифтTimesNORMAL; Атр=РасширениеФормы.ПолучитьАтрибут("фТехнологическиеПараметры"); Атр.Шрифт=ШрифтTimesNORMAL; Атр=РасширениеФормы.ПолучитьАтрибут("фРучнойВводШириныРисунка"); Атр.Шрифт=ШрифтTimesNORMAL; Атр=РасширениеФормы.ПолучитьАтрибут("фФормыПродаютсяОтдельно"); Атр.Шрифт=ШрифтTimesNORMAL; Атр=РасширениеФормы.ПолучитьАтрибут("фНеУдалать"); Атр.Шрифт=ШрифтTimesNORMAL; СоздатьПДИТДляОбъема(); СоздатьПДИТДляМенеджера(); СоздатьПДИТДляТехнолога(); СоздатьПДИТДляТПЛаминаторщика(); СоздатьПДПродажа(); СоздатьПДКонтрагентыПодчДоки(); ОбновитьТаблицыДокумента(); //Атр.ИзменитьСтиль(11,8192+256);//выравнивание влево //Атр.ИзменитьСтиль(11,8192);//выравнивание по центру //РасширениеФормы.ПолучитьАтрибут("кнДоговор").ИзменитьСтиль(11,8192+256); //РасширениеФормы.ПолучитьАтрибут("кнСпецификация").ИзменитьСтиль(11,8192+256); //РасширениеФормы.ПолучитьАтрибут("кнКомПредлжение").ИзменитьСтиль(11,8192+256); //РасширениеФормы.ПолучитьАтрибут("кнТехЗадание").ИзменитьСтиль(11,8192+256); //РасширениеФормы.ПолучитьАтрибут("кнТехКарта").ИзменитьСтиль(11,8192+256); //РасширениеФормы.ПолучитьАтрибут("кнЗаявкаНаСырье").ИзменитьСтиль(11,8192+256); //РасширениеФормы.ПолучитьАтрибут("кСоздатьКПЗ").ИзменитьСтиль(11,8192+256); //РасширениеФормы.ПолучитьАтрибут("кСоздатьСчет").ИзменитьСтиль(11,8192+256); //РасширениеФормы.ПолучитьАтрибут("кКПЗ").ИзменитьСтиль(11,8192+256); РасширениеФормы.ПолучитьАтрибут("кнДоговор").Шрифт=ШрифтTimesBOLD; РасширениеФормы.ПолучитьАтрибут("кнСпецификация").Шрифт=ШрифтTimesBOLD; РасширениеФормы.ПолучитьАтрибут("кнКомПредлжение").Шрифт=ШрифтTimesBOLD; РасширениеФормы.ПолучитьАтрибут("кнТехЗадание").Шрифт=ШрифтTimesBOLD; РасширениеФормы.ПолучитьАтрибут("кнТехКарта").Шрифт=ШрифтTimesBOLD; РасширениеФормы.ПолучитьАтрибут("кнЗаявкаНаСырье").Шрифт=ШрифтTimesBOLD; РасширениеФормы.ПолучитьАтрибут("кСоздатьКПЗ").Шрифт=ШрифтTimesBOLD; РасширениеФормы.ПолучитьАтрибут("кСоздатьСчет").Шрифт=ШрифтTimesBOLD; РасширениеФормы.ПолучитьАтрибут("кКПЗ").Шрифт=ШрифтTimesBOLD; РасширениеФормы.ПолучитьАтрибут("кПерепечатка").Шрифт=ШрифтTimesBOLD; КонецПроцедуры // =============================== Процедура ТПОбъем_ПередНачаломДобавления(ТабличноеПоле,Копирование, ФСО) НаборПрав=НазваниеНабораПрав(); ФСО=0; Если Форма.ТолькоПросмотр()=1 Тогда ЗакрытьДоступКПолям=1; ИначеЕсли Проведен()=1 Тогда Предупреждение("Нельзя изменять в поведенном документе!",60); ЗакрытьДоступКПолям=1; ИначеЕсли ЗакрытьДоступ=1 Тогда Предупреждение("Изменение запрещено !",60); ЗакрытьДоступКПолям=1; ИначеЕсли Найти(СтрПревилигированныеПользователи,СокрЛП(""+глПользователь))<>0 Тогда ЗакрытьДоступКПолям=0; Иначе ЗакрытьДоступКПолям=0; КонецЕсли; Если ЗакрытьДоступКПолям=1 Тогда Возврат; КонецЕсли; Если ОбщаяРасчетнаяТаблица.КоличествоСтрок()>0 Тогда Объем=0; Если КакСчитаем=СчитаемОтМассы Тогда Объем=ОбщаяРасчетнаяТаблица.ПолучитьЗначение(ОбщаяРасчетнаяТаблица.КоличествоСтрок(),"Масса"); ИначеЕсли КакСчитаем=СчитаемОтТиража Тогда Объем=ОбщаяРасчетнаяТаблица.ПолучитьЗначение(ОбщаяРасчетнаяТаблица.КоличествоСтрок(),"Тираж"); КонецЕсли; Если Объем=0 Тогда Возврат; КонецЕсли; КонецЕсли; ОбщаяРасчетнаяТаблица.НоваяСтрока(); Для ы=1 По тбКонтрагенты.КоличествоСтрок() Цикл ТаблицаРасчетнаяМассаОдногоЗаказчика=СоздатьОбъект("ТаблицаЗначений"); ТаблицаРасчетнаяМассаОдногоЗаказчика.Загрузить(тбКонтрагенты.ПолучитьЗначение(ы,"тбРасчетнаяМасса")); ТаблицаРасчетнаяМассаОдногоЗаказчика.НоваяСтрока(); тбКонтрагенты.УстановитьЗначение(ы,"тбРасчетнаяМасса",ТаблицаРасчетнаяМассаОдногоЗаказчика); КонецЦикла; ВспомогПроцедура(тбИсторияДокумента,"Изменения",глПользователь,"тбРасчетнаяМасса", "Добавлена строка объема"); ОбновитьТаблицыДокумента(); КонецПроцедуры // =============================== Процедура ТПОбъем_ПередНачаломИзменения(ТабличноеПоле,ФСО) Если Форма.ТолькоПросмотр()=1 Тогда ЗакрытьДоступКПолям=1; ИначеЕсли Проведен()=1 Тогда Предупреждение("Нельзя изменять в поведенном документе!"); ЗакрытьДоступКПолям=1; ИначеЕсли ЗакрытьДоступ=1 Тогда Предупреждение("Изменение запрещено !",60); ЗакрытьДоступКПолям=1; //ИначеЕсли Найти(СтрПревилигированныеПользователи,СокрЛП(""+глПользователь))<>0 Тогда // ЗакрытьДоступКПолям=0; ИначеЕсли (фПодписьСогласованиеЦены=1) Тогда ЗакрытьДоступКПолям=1; Иначе ЗакрытьДоступКПолям=0; КонецЕсли; Если ЗакрытьДоступКПолям=1 Тогда ФСО=0; Возврат; КонецЕсли; ИТЗ=ПДИТОбъем.Данные.ИндексированнаяТаблица; ИдКолонки=ТабличноеПоле.ТекущаяКолонка.Имя; ТекСтр=ПДИТОбъем.Данные.ТекущаяСтрока; Если ПустоеЗначение(КакСчитаем)=0 Тогда Если КакСчитаем=СчитаемОтМассы Тогда Если ИдКолонки="Тираж" Тогда ФСО=0; Возврат; КонецЕсли; ИначеЕсли КакСчитаем=СчитаемОтТиража Тогда Если ИдКолонки="Масса" Тогда ФСО=0; Возврат; КонецЕсли; КонецЕсли; КонецЕсли; КонецПроцедуры // =============================== Процедура ТПОбъем_ПередУдалением(ТабличноеПоле,ФСО) ФСО=0; ТекСтрока=ПДИТОбъем.Данные.ТекущаяСтрока; Если Форма.ТолькоПросмотр()=1 Тогда ЗакрытьДоступКПолям=1; ИначеЕсли Проведен()=1 Тогда Предупреждение("Нельзя изменять в поведенном документе!",60); ЗакрытьДоступКПолям=1; ИначеЕсли ЗакрытьДоступ=1 Тогда Предупреждение("Изменение запрещено !",60); ЗакрытьДоступКПолям=1; ИначеЕсли Найти(СтрПревилигированныеПользователи,СокрЛП(""+глПользователь))<>0 Тогда ЗакрытьДоступКПолям=0; ИначеЕсли (фПодписьСогласованиеЦены=1) Тогда ЗакрытьДоступКПолям=1; Иначе ЗакрытьДоступКПолям=0; КонецЕсли; Если ЗакрытьДоступКПолям=1 Тогда Возврат; КонецЕсли; Если Вопрос("Вы действительно хотите удалить строку?","Да+Нет",60)<>"Да" Тогда Возврат; КонецЕсли; ОбщаяРасчетнаяТаблица.УдалитьСтроку(ТекСтрока); Для ы=1 По тбКонтрагенты.КоличествоСтрок() Цикл ТаблицаРасчетнаяМассаОдногоЗаказчика=СоздатьОбъект("ТаблицаЗначений"); ТаблицаРасчетнаяМассаОдногоЗаказчика.Загрузить(тбКонтрагенты.ПолучитьЗначение(ы,"тбРасчетнаяМасса")); ТаблицаРасчетнаяМассаОдногоЗаказчика.УдалитьСтроку(ТекСтрока); тбКонтрагенты.УстановитьЗначение(ы,"тбРасчетнаяМасса",ТаблицаРасчетнаяМассаОдногоЗаказчика); КонецЦикла; ВспомогПроцедура(тбИсторияДокумента,"Изменения",глПользователь,"ОбщаяРасчетнаяТаблица", "Удалена строка объема"); ОбновитьТаблицыДокумента(); КонецПроцедуры // =============================== Процедура ТПОбъем_ПередОкончаниемРедактирования(ТабличноеПоле,_Строка, _Колонка, ТипРегиона, Значение, ФСО) ФСО=0; Если ТипРегиона=3 Тогда ИТЗ=ПДИТОбъем.Данные.ИндексированнаяТаблица; ИдКолонки=_Колонка.Имя; ТекСтрока=_Строка; ПрЗначение=Значение; //Масса = ОбщаяРасчетнаяТаблица.ПолучитьЗначение(ТекСтрока,"Масса"); //Тираж = ОбщаяРасчетнаяТаблица.ПолучитьЗначение(ТекСтрока,"Тираж"); Масса = 0; Тираж = 0; Если ИдКолонки="Масса" Тогда Масса=Значение; ИначеЕсли ИдКолонки="Тираж" Тогда Тираж=Значение; КонецЕсли; ОбщаяРасчетнаяТаблица.УстановитьЗначение(ТекСтрока,"Масса",Масса); ОбщаяРасчетнаяТаблица.УстановитьЗначение(ТекСтрока,"Тираж",Тираж); ОбщаяРасчетнаяТаблица.УстановитьЗначение(ТекСтрока,"Себистоимость",0); ОбщаяРасчетнаяТаблица.УстановитьЗначение(ТекСтрока,"Кол_квМТиража",0); ОбщаяРасчетнаяТаблица.УстановитьЗначение(ТекСтрока,"КолПогонМетровТиража",0); ОбщаяРасчетнаяТаблица.УстановитьЗначение(ТекСтрока,"СтоимостьНеРентабельно",0); ОбщаяРасчетнаяТаблица.УстановитьЗначение(ТекСтрока,"СтоимостьОтсрочкиНеРентабельно",0); ОбщаяРасчетнаяТаблица.УстановитьЗначение(ТекСтрока,"ПродСтоимостьНеРентабельно",0); ОбщаяРасчетнаяТаблица.УстановитьЗначение(ТекСтрока,"СтоимостьПрибыльно",0); ОбщаяРасчетнаяТаблица.УстановитьЗначение(ТекСтрока,"СтоимостьОтсрочкиПрибыльно",0); ОбщаяРасчетнаяТаблица.УстановитьЗначение(ТекСтрока,"ПродСтоимостьПрибыльно",0); ОбщаяРасчетнаяТаблица.УстановитьЗначение(ТекСтрока,"СтоимостьПремиально",0); ОбщаяРасчетнаяТаблица.УстановитьЗначение(ТекСтрока,"СтоимостьОтсрочкиПремиально",0); ОбщаяРасчетнаяТаблица.УстановитьЗначение(ТекСтрока,"ПродСтоимостьПремиально",0); ВспомогПроцедура(тбИсторияДокумента,"Изменения",глПользователь,"тбРасчетнаяМасса", "Изменена строка объема "+Значение); Если КакСчитаем=0 Тогда Если ИдКолонки="Масса" Тогда КакСчитаем=СчитаемОтМассы; ИначеЕсли ИдКолонки="Тираж" Тогда КакСчитаем=СчитаемОтТиража; КонецЕсли; КонецЕсли; Если РасчетСделан>0 Тогда СделатьРасчет(); КонецЕсли; ОбновитьТаблицыДокумента(); КонецЕсли; КонецПроцедуры // =============================== Процедура ТПОбъем_ПриАктивизацииСтроки(ТабличноеПоле) ОбновитьПоставщикДляМенеджера(); КонецПроцедуры //------------------------------------------------------------------------------------------------------------ Процедура ТПОбъем_ПриВыводеСтроки(ТабличноеПоле,ОформлениеСтроки,ДанныеСтроки,ТипРегиона) Если ТипРегиона=3 Тогда Если КакСчитаем=СчитаемОтМассы Тогда ОформлениеСтроки.Ячейки.Масса.Шрифт=ШрифтЗаголовка; ОформлениеСтроки.Ячейки.Тираж.Шрифт=ШрифтСтрок; ИначеЕсли КакСчитаем=СчитаемОтТиража Тогда ОформлениеСтроки.Ячейки.Масса.Шрифт=ШрифтСтрок; ОформлениеСтроки.Ячейки.Тираж.Шрифт=ШрифтЗаголовка; КонецЕсли; КонецЕсли; КонецПроцедуры // =============================== Процедура ТПМенеджер_ПередНачаломИзменения(ТабличноеПоле,ФСО) ФСО=0; //Если Форма.ТолькоПросмотр()=1 Тогда // ЗакрытьДоступКПолям=1; //ИначеЕсли Проведен()=1 Тогда // Предупреждение("Нельзя изменять в поведенном документе!"); // ЗакрытьДоступКПолям=1; //ИначеЕсли ЗакрытьДоступ=1 Тогда // Предупреждение("Изменение запрещено !"); // ЗакрытьДоступКПолям=1; //ИначеЕсли Найти(СтрПревилигированныеПользователи,СокрЛП(""+глПользователь))<>0 Тогда // ЗакрытьДоступКПолям=0; //ИначеЕсли (фПодписьМенеджера=0) Тогда // ЗакрытьДоступКПолям=0; //Иначе // ЗакрытьДоступКПолям=1; //КонецЕсли; //Если ЗакрытьДоступКПолям=1 Тогда // Возврат; //КонецЕсли; ИзмДизайны(3,"ТаблицаДизайновДляМенеджера"); КонецПроцедуры // =============================== Процедура ТПМенеджер_ПередУдалением(ТабличноеПоле,ФСО) ФСО=0; Если Форма.ТолькоПросмотр()=1 Тогда ЗакрытьДоступКПолям=1; ИначеЕсли Проведен()=1 Тогда Предупреждение("Нельзя изменять в поведенном документе!"); ЗакрытьДоступКПолям=1; ИначеЕсли ЗакрытьДоступ=1 Тогда Предупреждение("Изменение запрещено !"); ЗакрытьДоступКПолям=1; ИначеЕсли (фПодписьТехнолога=1) Тогда ЗакрытьДоступКПолям=1; ИначеЕсли (фПодписьМенеджера=1) Тогда ЗакрытьДоступКПолям=1; Иначе ЗакрытьДоступКПолям=0; КонецЕсли; Если ЗакрытьДоступКПолям=1 Тогда Возврат; КонецЕсли; ИзмДизайны(2,"ТаблицаДизайновДляМенеджера"); КонецПроцедуры // =============================== Процедура ТПМенеджер_ПередНачаломДобавления(ТабличноеПоле,Копирование, ФСО) ФСО=0; Если Форма.ТолькоПросмотр()=1 Тогда ЗакрытьДоступКПолям=1; ИначеЕсли Проведен()=1 Тогда Предупреждение("Нельзя изменять в поведенном документе!"); ЗакрытьДоступКПолям=1; ИначеЕсли ЗакрытьДоступ=1 Тогда Предупреждение("Изменение запрещено !"); ЗакрытьДоступКПолям=1; ИначеЕсли (фПодписьТехнолога=1) Тогда ЗакрытьДоступКПолям=1; ИначеЕсли (фПодписьМенеджера=1) Тогда ЗакрытьДоступКПолям=1; Иначе ЗакрытьДоступКПолям=0; КонецЕсли; Если ЗакрытьДоступКПолям=1 Тогда Возврат; КонецЕсли; Добавить=1; Удалить=2;Редактировать=3;Копировать=4; Если Копирование=1 Тогда Действие=Копировать; Иначе Действие=Добавить; КонецЕсли; ИзмДизайны(Действие,"ТаблицаДизайновДляМенеджера"); КонецПроцедуры // =============================== Процедура ТПТехнолог_ПриВыводеСтроки(ТабличноеПоле,ОформлениеСтроки,ДанныеСтроки,ТипРегиона) Если ТипРегиона=3 Тогда ИндексированнаяТаблица=ТабличноеПоле.ПоставщикДанных.ИндексированнаяТаблица; НС=ДанныеСтроки.НомерСтроки; Если ПустоеЗначение(НС)=0 Тогда ИмяКолонки="РазверткаДизайна"; Если ПустоеЗначение(ИндексированнаяТаблица.Получить(НС,ИмяКолонки))=1 Тогда ОформлениеСтроки.Ячейки.Получить(ИмяКолонки).ЦветТекста=глПолучитьЦвет(255,0,0); ОформлениеСтроки.Ячейки.РазверткаДизайна.УстановитьТекст("Не подобрана развертка!"); Иначе ОформлениеСтроки.Ячейки.РазверткаДизайна.ЦветТекста=-1; КонецЕсли; КонецЕсли; КонецЕсли; КонецПроцедуры // =============================== Процедура ТПТехнолог_ПриАктивизацииСтроки(ТабличноеПоле) Если КоличествоСтрок()<>0 Тогда Если фЗапечаткаТекущДизайна=2 Тогда СохранитьПредТаблицуКрасокДизайна(); ТекСтрокаТаблицаДизайновДляТехнолога=ПДИнТбТехнолог.Данные.ТекущаяСтрока; ОбновитьТаблицыДокумента(); ИТЗ = ПДИнТбТехнолог.Данные.ИндексированнаяТаблица; ТекДизайн=ИТЗ.ПолучитьЗначение(ТекСтрокаТаблицаДизайновДляТехнолога,"Дизайн"); Заголовок=?(ПустоеЗначение(ТекДизайн)=1,"Запечатка текущего дизайна","Запечатка "+ТекДизайн.Наименование); ТекСтр=ПДИнТбТехнолог.Данные.ТекущаяСтрока; Если ТекСтр>1 Тогда Форма.кКопироватьКраски.Доступность(1); Иначе Форма.кКопироватьКраски.Доступность(0); КонецЕсли; Иначе ТекСтрокаТаблицаДизайновДляТехнолога=1; Заголовок="Общая запечатка дизайнов"; Форма.кКопироватьКраски.Доступность(0); КонецЕсли; Иначе Форма.кКопироватьКраски.Доступность(0); КонецЕсли; КонецПроцедуры // =============================== Процедура ТПТехнолог_ПередНачаломИзменения(ТабличноеПоле,ФСО) ФСО=0; //Если Форма.ТолькоПросмотр()=1 Тогда // ЗакрытьДоступКПолям=1; //ИначеЕсли Проведен()=1 Тогда // Предупреждение("Нельзя изменять в поведенном документе!"); // ЗакрытьДоступКПолям=1; //ИначеЕсли ЗакрытьДоступ=1 Тогда // Предупреждение("Изменение запрещено !"); // ЗакрытьДоступКПолям=1; //ИначеЕсли Найти(СтрПревилигированныеПользователи,СокрЛП(""+глПользователь))<>0 Тогда // ЗакрытьДоступКПолям=0; //ИначеЕсли (фПодписьТехнолога=0) Тогда // ЗакрытьДоступКПолям=0; //Иначе // ЗакрытьДоступКПолям=1; //КонецЕсли; //Если ЗакрытьДоступКПолям=1 Тогда // Возврат; //КонецЕсли; ИзмДизайны(3,"ТаблицаДизайновДляТехнолога"); КонецПроцедуры // =============================== Процедура ТПТехнолог_ПередУдалением(ТабличноеПоле,ФСО) ФСО=0; Если Форма.ТолькоПросмотр()=1 Тогда ЗакрытьДоступКПолям=1; ИначеЕсли Проведен()=1 Тогда Предупреждение("Нельзя изменять в поведенном документе!"); ЗакрытьДоступКПолям=1; ИначеЕсли ЗакрытьДоступ=1 Тогда Предупреждение("Изменение запрещено !"); ЗакрытьДоступКПолям=1; ИначеЕсли Найти(СтрПревилигированныеПользователи,СокрЛП(""+глПользователь))<>0 Тогда ЗакрытьДоступКПолям=0; ИначеЕсли (фПодписьТехнолога=0) Тогда ЗакрытьДоступКПолям=0; Иначе ЗакрытьДоступКПолям=1; КонецЕсли; Если ЗакрытьДоступКПолям=1 Тогда Возврат; КонецЕсли; ИзмДизайны(2,"ТаблицаДизайновДляМенеджера"); КонецПроцедуры // =============================== Процедура ТПТехнолог_ПередНачаломДобавления(ТабличноеПоле,Копирование, ФСО) ФСО=0; //Если Форма.ТолькоПросмотр()=1 Тогда // ЗакрытьДоступКПолям=1; //ИначеЕсли Проведен()=1 Тогда // Предупреждение("Нельзя изменять в поведенном документе!"); // ЗакрытьДоступКПолям=1; //ИначеЕсли ЗакрытьДоступ=1 Тогда // Предупреждение("Изменение запрещено !"); // ЗакрытьДоступКПолям=1; //ИначеЕсли Найти(СтрПревилигированныеПользователи,СокрЛП(""+глПользователь))<>0 Тогда // ЗакрытьДоступКПолям=0; //ИначеЕсли (фПодписьТехнолога=0) Тогда // ЗакрытьДоступКПолям=0; //Иначе // ЗакрытьДоступКПолям=1; //КонецЕсли; //Если ЗакрытьДоступКПолям=1 Тогда // Возврат; //КонецЕсли; //Добавить=1; Удалить=2;Редактировать=3;Копировать=4; //Если Копирование=1 Тогда // Действие=Копировать; //Иначе // Действие=Добавить; //КонецЕсли; //ИзмДизайны(Действие,"ТаблицаДизайновДляТехнолога"); КонецПроцедуры // =============================== Процедура ТПКраски_ПередНачаломДобавления(ТабличноеПоле,Копирование, ФСО) НаборПрав=НазваниеНабораПрав(); ИТЗТехнолог=ПДИнТбТехнолог.Данные.ИндексированнаяТаблица; КвоДизайнов=ИТЗТехнолог.КоличествоСтрок(); Если Форма.ТолькоПросмотр()=1 Тогда ЗакрытьДоступКТехнологичПолям=1; ИначеЕсли Проведен()=1 Тогда Предупреждение("Нельзя изменять в поведенном документе!"); ЗакрытьДоступКТехнологичПолям=1; ИначеЕсли ЗакрытьДоступ=1 Тогда Предупреждение("Изменение запрещено !"); ЗакрытьДоступКТехнологичПолям=1; ИначеЕсли КвоДизайнов=0 Тогда Предупреждение("Не выбран Дизайн"); ЗакрытьДоступКТехнологичПолям=1; ИначеЕсли Найти(СтрПревилигированныеПользователи,СокрЛП(""+глПользователь))<>0 Тогда ЗакрытьДоступКТехнологичПолям=0; ИначеЕсли (фПодписьСогласованиеЦены=1) Тогда ЗакрытьДоступКТехнологичПолям=1; ИначеЕсли (фПодписьТехнолога=1) Тогда ЗакрытьДоступКТехнологичПолям=1; Иначе ЗакрытьДоступКТехнологичПолям=0; КонецЕсли; Если ЗакрытьДоступКТехнологичПолям=1 Тогда ФСО=0; Иначе РасчетСделан=0; КонецЕсли; КонецПроцедуры // =============================== Процедура ТПКраски_ПередНачаломИзменения(ТабличноеПоле,ФСО) Если Форма.ТолькоПросмотр()=1 Тогда ЗакрытьДоступКТехнологичПолям=1; ИначеЕсли Проведен()=1 Тогда Предупреждение("Нельзя изменять в поведенном документе!"); ЗакрытьДоступКТехнологичПолям=1; ИначеЕсли ЗакрытьДоступ=1 Тогда Предупреждение("Изменение запрещено !"); ЗакрытьДоступКТехнологичПолям=1; ИначеЕсли Найти(СтрПревилигированныеПользователи,СокрЛП(""+глПользователь))<>0 Тогда ЗакрытьДоступКТехнологичПолям=0; ИначеЕсли (фПодписьСогласованиеЦены=1) Тогда ЗакрытьДоступКТехнологичПолям=1; ИначеЕсли (фПодписьТехнолога=1) Тогда ЗакрытьДоступКТехнологичПолям=1; Иначе ЗакрытьДоступКТехнологичПолям=0; КонецЕсли; Если ЗакрытьДоступКТехнологичПолям=1 Тогда ФСО=0; Возврат; КонецЕсли; ИдентификаторКолонки=ТабличноеПоле.ТекущаяКолонка.Имя; Если фЗапечаткаТекущДизайна=1 Тогда Если (ИдентификаторКолонки<>"Краска")И(ИдентификаторКолонки<>"Анилокс") Тогда ФСО=0; Возврат; КонецЕсли; КонецЕсли; Если ИдентификаторКолонки="Краска" Тогда СтараяКраска=ТабличноеПоле.ТекущиеДанные.Краска; спрПоизводственныеМатериалы=СоздатьОбъект("Справочник.ПоизводственныеМатериалы"); Если ПустоеЗначение(СтараяКраска)=1 Тогда Если ПустоеЗначение(Константа.НаименованиеРодителяКрасок)=1 Тогда НаименованиеРодителя= "Лакокрасочные материалы"; Иначе НаименованиеРодителя= СокрЛП(Константа.НаименованиеРодителяКрасок); КонецЕсли; спрПоизводственныеМатериалы.НайтиПоНаименованию(НаименованиеРодителя,0); Родитель=спрПоизводственныеМатериалы.ТекущийЭлемент(); Иначе Родитель=СтараяКраска.Родитель; КонецЕсли; Если ПустоеЗначение(СтараяКраска)=1 Тогда ТабличноеПоле.Реквизиты.Краска.Родитель=Родитель; КонецЕсли; ИначеЕсли ИдентификаторКолонки="КвоФотоФорм" Тогда ИТЗТехнолог=ПДИнТбТехнолог.Данные.ИндексированнаяТаблица; ТекСтр=ПДИнТбТехнолог.Данные.ТекущаяСтрока; СостояниеТекДизайна=ИТЗТехнолог.ПолучитьЗначение(ТекСтр,"СостояниеДизайна"); Если (СостояниеТекДизайна=Перечисление.СостояниеДизайна.Новый) Тогда ФСО=1; ИначеЕсли (СостояниеТекДизайна=Перечисление.СостояниеДизайна.ПовторСНовымиФормами) Тогда ФСО=1; ИначеЕсли (СостояниеТекДизайна=Перечисление.СостояниеДизайна.ПовторСИзменениями) Тогда ФСО=1; ИначеЕсли(СостояниеТекДизайна=Перечисление.СостояниеДизайна.Повтор) Тогда ФСО=0; Иначе ФСО=0; КонецЕсли; КонецЕсли; КонецПроцедуры // =============================== Процедура ТПКраски_ПередУдалением(ТабличноеПоле,ФСО) Если Форма.ТолькоПросмотр()=1 Тогда ЗакрытьДоступКТехнологичПолям=1; ИначеЕсли Проведен()=1 Тогда Предупреждение("Нельзя изменять в поведенном документе!"); ЗакрытьДоступКТехнологичПолям=1; ИначеЕсли ЗакрытьДоступ=1 Тогда Предупреждение("Изменение запрещено !"); ЗакрытьДоступКТехнологичПолям=1; ИначеЕсли (фПодписьСогласованиеЦены=1) Тогда ЗакрытьДоступКТехнологичПолям=1; ИначеЕсли (фПодписьТехнолога=1) Тогда ЗакрытьДоступКТехнологичПолям=1; Иначе ЗакрытьДоступКТехнологичПолям=0; КонецЕсли; Если ЗакрытьДоступКТехнологичПолям=1 Тогда ФСО=0; Возврат; КонецЕсли; ВспомогПроцедура(тбИсторияДокумента,"Изменения",глПользователь,"тбКраски", "Удалена строка "+ТабличноеПоле.ТекущиеДанные.Краска); КонецПроцедуры // =============================== Процедура ТПКраски_ПослеУдаления(ТабличноеПоле) Если фЗапечаткаТекущДизайна=1 Тогда ИТЗКраски=ПДИТКраски.Данные.ИндексированнаяТаблица; ОбщаяТаблицаКрасок=СоздатьОбъект("ИндексированнаяТаблица"); ИТЗКраски.Выгрузить(ОбщаяТаблицаКрасок); Если ОбщаяТаблицаКрасок.НомерИндекса("инКраска")=0 Тогда ОбщаяТаблицаКрасок.ДобавитьИндекс("инКраска","Краска"); КонецЕсли; ИТСтрокиДокумента.ВНачало(); Пока ИТСтрокиДокумента.СледующаяСтрока()=1 Цикл ТаблицаКрасокДизайна=ИТСтрокиДокумента.ПолучитьЗначение(,"ТаблицаКрасок"); ТаблицаКрасокДизайна.ВыбратьСтроки(); ы=1; Пока 1=1 Цикл Если (ы> ТаблицаКрасокДизайна.КоличествоСтрок()) Тогда Прервать; КонецЕсли; Краска=ТаблицаКрасокДизайна.ПолучитьЗначение(ы,"Краска"); НомСтр=ОбщаяТаблицаКрасок.НайтиСтроку("инКраска",Краска); Если НомСтр=0 Тогда ТаблицаКрасокДизайна.УдалитьСтроку(ы); Иначе ы=ы+1; КонецЕсли; КонецЦикла; ИТСтрокиДокумента.УстановитьЗначение(,"ТаблицаКрасок",ТаблицаКрасокДизайна); КонецЦикла; КонецЕсли; РасчетСделан=0; //ЗаполнитьОбщуюТаблицуКрасок(); КонецПроцедуры // =============================== Процедура ТПКраски_ПередОкончаниемРедактирования(ТабличноеПоле,_Строка, _Колонка, ТипРегиона, Значение, ФСО) Если ТипРегиона=3 Тогда ИТЗТехнолог=ПДИнТбТехнолог.Данные.ИндексированнаяТаблица; ТекСтрока=ПДИнТбТехнолог.Данные.ТекущаяСтрока; ТекДизайн=ИТЗТехнолог.ПолучитьЗначение(ТекСтрока,"Дизайн"); Если ИТСтрокиДокумента.НомерИндекса("инДизайн")=0 Тогда ИТСтрокиДокумента.ДобавитьИндекс("инДизайн","Дизайн"); КонецЕсли; НомСтр=ИТСтрокиДокумента.НайтиСтроку("инДизайн", ТекДизайн); Если НомСтр>0 Тогда ТаблицаКрасок=ИТСтрокиДокумента.ПолучитьЗначение(НомСтр,"ТаблицаКрасок"); Иначе ФСО=0; Сообщить("Ошибка в ТПКраски_ПередОкончаниемРедактирования"); Возврат ; КонецЕсли; ИдентификаторКолонки=_Колонка.Имя; ТекСтр=_Строка; ПрЗначение=Значение; ИТЗКраски=ПДИТКраски.Данные.ИндексированнаяТаблица; СтараяКраска=ТабличноеПоле.ТекущиеДанные.Краска; Анилокс=ТабличноеПоле.ТекущиеДанные.Анилокс; спАнилоксы=ВернутьАнилоксы(ПечатнаяМашина); Если ИдентификаторКолонки = "Краска"Тогда НоваяКраска=Значение; АнилоксПоУмолчанию=ВернутьАнилоксПоУмолчанию(ПечатнаяМашина,НоваяКраска); Если (ПустоеЗначение(АнилоксПоУмолчанию)=1)И(ПустоеЗначение(Анилокс)=1) Тогда Анилокс=спАнилоксы.ПолучитьЗначение(1); ИначеЕсли (ПустоеЗначение(АнилоксПоУмолчанию)=0)И(НоваяКраска<>СтараяКраска) Тогда Анилокс=АнилоксПоУмолчанию; ИначеЕсли (ПустоеЗначение(АнилоксПоУмолчанию)=0)И(ПустоеЗначение(Анилокс)=1) Тогда Анилокс=АнилоксПоУмолчанию; КонецЕсли; Цена=НоваяКраска.Цена.Получить(ДатаДляЭкономистов); ИТЗКраски.УстановитьЗначение(ТекСтр,"Краска",НоваяКраска); ИТЗКраски.УстановитьЗначение(ТекСтр,"Анилокс",Анилокс); ИТЗКраски.УстановитьЗначение(ТекСтр,"Цена",Цена); Если фЗапечаткаТекущДизайна=1 Тогда ИзменитьКраскуВоВсехДизайновИзОбщейТаблицыКрасок(СтараяКраска,НоваяКраска,Анилокс); КонецЕсли; ВспомогПроцедура(тбИсторияДокумента,"Изменения",глПользователь,"тбКраски", "Изменена Краска "+СтараяКраска+" на "+ПрЗначение); ИначеЕсли ИдентификаторКолонки = "ПроцентЗапечатки" Тогда НовыйПроцентЗапечатки=ПрЗначение; ИТЗКраски.УстановитьЗначение(ТекСтр,"ПроцентЗапечатки",НовыйПроцентЗапечатки); ВспомогПроцедура(тбИсторияДокумента,"Изменения",глПользователь,"тбКраски", "Изменен ПроцентЗапечатки для "+СтараяКраска+" на "+НовыйПроцентЗапечатки); ИначеЕсли ИдентификаторКолонки = "КвоФотоФорм" Тогда НовыйКвоФотоФорм=ПрЗначение; ИТЗКраски.УстановитьЗначение(ТекСтр,"КвоФотоФорм",НовыйКвоФотоФорм); ВспомогПроцедура(тбИсторияДокумента,"Изменения",глПользователь,"тбКраски", "Изменено КвоФотоФорм для "+СтараяКраска+" на "+НовыйКвоФотоФорм); ИначеЕсли ИдентификаторКолонки = "ПроцентСвязующего" Тогда НовыйПроцентСвязующего=ПрЗначение; ИТЗКраски.УстановитьЗначение(ТекСтр,"ПроцентЗапечатки",НовыйПроцентСвязующего); ВспомогПроцедура(тбИсторияДокумента,"Изменения",глПользователь,"тбКраски", "Изменен ПроцентСвязующего для "+СтараяКраска+" на "+НовыйПроцентСвязующего); ИначеЕсли ИдентификаторКолонки = "Анилокс" Тогда НовыйАнилокс=ПрЗначение; ИТЗКраски.УстановитьЗначение(ТекСтр,"Анилокс",НовыйАнилокс); ИзменитьКраскуВоВсехДизайновИзОбщейТаблицыКрасок(СтараяКраска,СтараяКраска,НовыйАнилокс); ВспомогПроцедура(тбИсторияДокумента,"Изменения",глПользователь,"тбКраски", "Изменена ЛинеатураАнилокса для "+СтараяКраска+" на "+НовыйАнилокс); КонецЕсли; Если фЗапечаткаТекущДизайна=2 Тогда ИТЗКраски.Выгрузить(ТаблицаКрасок); ИТСтрокиДокумента.УстановитьЗначение(НомСтр,"ТаблицаКрасок",ТаблицаКрасок); КонецЕсли; КонецЕсли; РасчетСделан=0; КонецПроцедуры // ТПКраски_ПослеУдаления //=========================================================================================== Процедура ТПКраски_НачалоПеретаскивания(ТабличноеПоле, ДопустимыеДействия, Значение, Колонка, ТипРегиона, ТипЦели) ДопустимыеДействия=0; Если ТипРегиона=3 Тогда ИдентификаторКолонки=Колонка.Имя; Если (ИдентификаторКолонки="Краска") Тогда ДопустимыеДействия=1; ПеретаскиваемоеЗначение=СоздатьОбъект("АссоциативныйВектор"); КонтекстФормы=глВернутьКонтекст(Контекст); ИндексированнаяТаблица=ТабличноеПоле.ПоставщикДанных.ИндексированнаяТаблица; ПеретаскиваемоеЗначение.Добавить(КонтекстФормы,"КонтекстФормы"); ПеретаскиваемоеЗначение.Добавить(ПечатнаяМашина,"ПечатнаяМашина"); ПеретаскиваемоеЗначение.Добавить(ИндексированнаяТаблица,"ИндексированнаяТаблица"); ПеретаскиваемоеЗначение.Добавить(ТабличноеПоле.ВыделенныеСтроки,"ВыделенныеСтроки"); Значение=ПеретаскиваемоеЗначение; КонецЕсли; КонецЕсли; КонецПроцедуры // =============================== Процедура ТПКраски_ПроверкаПеретаскивания(ТабличноеПоле,Действие, Значение, СтрокаТП, КолонкаТП, ТипРегиона, ТипЦели) Действие=0; Если ТипРегиона=3 Тогда Если фПодписьТехнолога=0 Тогда Если ТипЗначенияСтр(Значение)="АссоциативныйВектор" Тогда Если Значение.НайтиКлюч("ПечатнаяМашина")=1 Тогда Если Значение.ПечатнаяМашина=ПечатнаяМашина Тогда Действие=1; КонецЕсли; КонецЕсли; КонецЕсли; КонецЕсли; КонецЕсли; КонецПроцедуры // =============================== Процедура ТПКраски_ОкончаниеПеретаскивания(ТабличноеПоле, Действие, Значение, Колонка, ТипРегиона) Действие=0; Если ТипРегиона=3 Тогда Если ТипЗначенияСтр(Значение)="АссоциативныйВектор" Тогда Действие=1; КонецЕсли; КонецЕсли; КонецПроцедуры // =============================== Процедура ТПКраски_Перетаскивание(ТабличноеПоле,Действие, Значение, СтрокаТП, КолонкаТП, ТипРегиона) Если ТипРегиона=3 Тогда ПеретаскиваемоеЗначение=Значение; Если ТипЗначенияСтр(ПеретаскиваемоеЗначение)="АссоциативныйВектор" Тогда КонтекстФормы=глВернутьКонтекст(Контекст); Если ПеретаскиваемоеЗначение.КонтекстФормы=КонтекстФормы Тогда Действие=0; Возврат; КонецЕсли; Если ПеретаскиваемоеЗначение.ПечатнаяМашина<>ПечатнаяМашина Тогда Действие=0; Возврат; КонецЕсли; ИндексированнаяТаблица=ПеретаскиваемоеЗначение.ИндексированнаяТаблица; ВыделенныеСтроки=ПеретаскиваемоеЗначение.ВыделенныеСтроки; КвоВыделенныхСтрок=ВыделенныеСтроки.Количество(); Для НЗ=0 По КвоВыделенныхСтрок-1 Цикл СтараяКраска=""; Анилокс=""; НСВПереданнойТаблице=ВыделенныеСтроки.Получить(НЗ); НоваяКраска=ИндексированнаяТаблица.Получить(НСВПереданнойТаблице,"Краска"); НовыйПроцентЗапечатки=ИндексированнаяТаблица.Получить(НСВПереданнойТаблице,"ПроцентЗапечатки"); НовыйКвоФотоФорм=0; НовыйПроцентСвязующего=ИндексированнаяТаблица.Получить(НСВПереданнойТаблице,"ПроцентСвязующего"); НовыйАнилокс=ИндексированнаяТаблица.Получить(НСВПереданнойТаблице,"Анилокс"); Если ТипЗначенияСтр(НовыйАнилокс)="Справочник" Тогда Если НовыйАнилокс.Владелец=ПечатнаяМашина Тогда Анилокс=НовыйАнилокс; КонецЕсли; КонецЕсли; ИТЗКраски=ПДИТКраски.Данные.ИндексированнаяТаблица; Если ИТЗКраски.НомерИндекса("инКраска")=0 Тогда ИТЗКраски.ДобавитьИндекс("инКраска","Краска"); КонецЕсли; НС=ИТЗКраски.НайтиСтроку("инКраска",НоваяКраска); Если НС<>0 Тогда Продолжить; КонецЕсли; ИТЗКраски.НоваяСтрока(); ТекСтр=ИТЗКраски.НомерСтроки; Цена=НоваяКраска.Цена.Получить(ДатаДляЭкономистов); ИТЗКраски.УстановитьЗначение(ТекСтр,"Краска",НоваяКраска); ИТЗКраски.УстановитьЗначение(ТекСтр,"Анилокс",НовыйАнилокс); ИТЗКраски.УстановитьЗначение(ТекСтр,"Цена",Цена); Если фЗапечаткаТекущДизайна=1 Тогда ИзменитьКраскуВоВсехДизайновИзОбщейТаблицыКрасок(СтараяКраска,НоваяКраска,Анилокс); КонецЕсли; Если фЗапечаткаТекущДизайна=2 Тогда ИТЗКраски.УстановитьЗначение(ТекСтр,"ПроцентЗапечатки",НовыйПроцентЗапечатки); ИТЗКраски.УстановитьЗначение(ТекСтр,"КвоФотоФорм",НовыйКвоФотоФорм); ИТЗКраски.УстановитьЗначение(ТекСтр,"ПроцентСвязующего",НовыйПроцентСвязующего); ИТЗТехнолог=ПДИнТбТехнолог.Данные.ИндексированнаяТаблица; ТекСтрока=ПДИнТбТехнолог.Данные.ТекущаяСтрока; ТекДизайн=ИТЗТехнолог.ПолучитьЗначение(ТекСтрока,"Дизайн"); Если ИТСтрокиДокумента.НомерИндекса("инДизайн")=0 Тогда ИТСтрокиДокумента.ДобавитьИндекс("инДизайн","Дизайн"); КонецЕсли; НомСтр=ИТСтрокиДокумента.НайтиСтроку("инДизайн", ТекДизайн); Если НомСтр>0 Тогда ТаблицаКрасок=ИТСтрокиДокумента.ПолучитьЗначение(НомСтр,"ТаблицаКрасок"); Иначе Сообщить("Ошибка в ТПКраски_Перетаскивание"); Действие=0; Возврат ; КонецЕсли; ИТЗКраски.Выгрузить(ТаблицаКрасок); ИТСтрокиДокумента.УстановитьЗначение(НомСтр,"ТаблицаКрасок",ТаблицаКрасок); КонецЕсли; ВспомогПроцедура(тбИсторияДокумента,"Изменения",глПользователь,"тбКраски", "Скопирована строка красок из "+СокрЛП(ПеретаскиваемоеЗначение.КонтекстФормы.НомерДок)); КонецЦикла; РасчетСделан=0; Действие=1; ОбновитьТаблицыДокумента(); КонецЕсли; КонецЕсли; КонецПроцедуры //=========================================================================================== Процедура ТППродажа_ПередНачаломДобавления(ТабличноеПоле,Копирование, ФСО) ФСО=0; КонецПроцедуры // =============================== Процедура ТППродажа_ПередНачаломИзменения(ТабличноеПоле,ФСО) Если Форма.ТолькоПросмотр()=1 Тогда ФСО=0; Возврат; КонецЕсли; Если Проведен()=1 Тогда Предупреждение("Нельзя изменять в поведенном документе!"); ФСО=0; Возврат; ИначеЕсли РасчетСделан<>1 Тогда Предупреждение("Выполните перерасчет!"); ФСО=0; Возврат; ИначеЕсли (фПодписьСогласованиеЦены=1) Тогда ФСО=0; Возврат; КонецЕсли; ИТЗ=ПДИТПродажа.Данные.ИндексированнаяТаблица; НС=ПДИТПродажа.Данные.ТекущаяСтрока; ТекЗаказчик=ИТЗ.ПолучитьЗначение(НС,"Контрагент"); фДругаяСтоимостьФормТекЗаказчика=ИТЗ.ПолучитьЗначение(НС,"фДругаяСтоимостьФорм"); НестандартныеЧислаВДокументахТекЗаказчика=ТекЗаказчик.НестандартныеЧислаВДокументах.Получить(ДатаДляЭкономистов); ИдентификаторКолонки=ТабличноеПоле.ТекущаяКолонка.Имя; Если ИдентификаторКолонки="фДругаяСтоимостьФорм" Тогда ИначеЕсли ИдентификаторКолонки="ПродажнаяСтоимостьФорм" Тогда Если фДругаяСтоимостьФормТекЗаказчика=0 Тогда ФСО=0; Возврат; КонецЕсли; ИначеЕсли ИдентификаторКолонки="УстановленнаяЦенаБезФорм" Тогда Если фДругаяСтоимостьФормТекЗаказчика=0 Тогда ФСО=0; Возврат; КонецЕсли; ИначеЕсли (ИдентификаторКолонки="НестандартныйОбъем")и(НестандартныеЧислаВДокументахТекЗаказчика=1) Тогда ИначеЕсли ИдентификаторКолонки="УстановленнаяЦена" Тогда Если фДругаяСтоимостьФормТекЗаказчика=1 Тогда ФСО=0; Возврат; КонецЕсли; ИначеЕсли ИдентификаторКолонки="Откат" Тогда ИначеЕсли ИдентификаторКолонки="УстановленнаяЦенаПоДокументам" Тогда Иначе ФСО=0; Возврат; КонецЕсли; КонецПроцедуры // =============================== Процедура ТППродажа_ПередУдалением(ТабличноеПоле,ФСО) ФСО=0; КонецПроцедуры // =============================== Процедура ТППродажа_ПриВыбореФлажка(ТабличноеПоле,_Строка, _Колонка, ТипРегиона) Если ТипРегиона=3 Тогда ФСО=1; ИдентификаторКолонки=_Колонка.Имя; ТекСтр=_Строка; ИТЗ=ПДИТПродажа.Данные.ИндексированнаяТаблица; Если Форма.ТолькоПросмотр()=1 Тогда ФСО=0; КонецЕсли; Если Проведен()=1 Тогда Предупреждение("Нельзя изменять в поведенном документе!"); ФСО=0; ИначеЕсли РасчетСделан<>1 Тогда Предупреждение("Выполните перерасчет!"); ФСО=0; ИначеЕсли (фПодписьСогласованиеЦены=1) Тогда ФСО=0; КонецЕсли; Если ФСО=1 Тогда фДругаяСтоимостьФормТекЗаказчика=тбКонтрагенты.ПолучитьЗначение(ТекСтр,"фДругаяСтоимостьФорм"); УстановленныйОбъемТекЗаказчика=тбКонтрагенты.ПолучитьЗначение(ТекСтр,"УстановленныйОбъем"); НомерСтроки = ТабличноеПоле.ТекущиеДанные.НомерСтроки; ЗначениеФлажка = ИТЗ.ПолучитьЗначение(НомерСтроки,ИдентификаторКолонки); Если ИдентификаторКолонки="фДругаяСтоимостьФорм" Тогда фДругаяСтоимостьФормТекЗаказчика=ЗначениеФлажка; тбКонтрагенты.УстановитьЗначение(ТекСтр,"фДругаяСтоимостьФорм",фДругаяСтоимостьФормТекЗаказчика); ИзмФлагДругаяСтоимостьФорм(); КонецЕсли; КонецЕсли; КонецЕсли; КонецПроцедуры // =============================== Процедура ТППродажа_ПередОкончаниемРедактирования(ТабличноеПоле,_Строка, _Колонка, ТипРегиона, Значение, ФСО) Если ТипРегиона=3 Тогда ФСО=0; ИдентификаторКолонки=_Колонка.Имя; ТекСтр=_Строка; ПрЗначение=Значение; ИТЗ=ПДИТПродажа.Данные.ИндексированнаяТаблица; фДругаяСтоимостьФормТекЗаказчика=тбКонтрагенты.ПолучитьЗначение(ТекСтр,"фДругаяСтоимостьФорм"); УстановленныйОбъемТекЗаказчика=тбКонтрагенты.ПолучитьЗначение(ТекСтр,"УстановленныйОбъем"); СебистоимостьПечатныхФормТекЗаказчика=тбКонтрагенты.ПолучитьЗначение(ТекСтр,"СебистоимостьПечатныхФорм"); ПродажнаяСтоимостьФормТекЗаказчика=тбКонтрагенты.ПолучитьЗначение(ТекСтр,"ПродажнаяСтоимостьФорм"); УстановленнаяЦенаБезФормТекЗаказчика=тбКонтрагенты.ПолучитьЗначение(ТекСтр,"УстановленнаяЦенаБезФорм"); УстановленнаяЦенаТекЗаказчика=тбКонтрагенты.ПолучитьЗначение(ТекСтр,"УстановленнаяЦена"); НестандартныйОбъемТекЗаказчика=тбКонтрагенты.ПолучитьЗначение(ТекСтр,"НестандартныйОбъем"); ОткатТекЗаказчика=тбКонтрагенты.ПолучитьЗначение(ТекСтр,"Откат"); УстановленнаяЦенаПоДокументамТекЗаказчика=тбКонтрагенты.ПолучитьЗначение(ТекСтр,"УстановленнаяЦенаПоДокументам"); ТаблицаРасчетнаяМассаТекЗаказчика=тбКонтрагенты.ПолучитьЗначение(ТекСтр,"тбРасчетнаяМасса"); Если ПустоеЗначение(УстановленныйОбъемТекЗаказчика)=1 Тогда ТекстПредупреждения="Установленный Объем Текущего Заказчика = 0!!! |Это ошибка. Обратитесь к разработчику."; Предупреждение(ТекстПредупреждения,60); Возврат; КонецЕсли; Если ИдентификаторКолонки="фДругаяСтоимостьФорм" Тогда фДругаяСтоимостьФормТекЗаказчика=Значение; тбКонтрагенты.УстановитьЗначение(ТекСтр,"фДругаяСтоимостьФорм",фДругаяСтоимостьФормТекЗаказчика); ИзмФлагДругаяСтоимостьФорм(); ИначеЕсли ИдентификаторКолонки="ПродажнаяСтоимостьФорм" Тогда ПродажнаяСтоимостьФормТекЗаказчика=ПрЗначение; Если фДругаяСтоимостьФормТекЗаказчика=1 Тогда Если (ПродажнаяСтоимостьФормТекЗаказчика=0) Тогда ПродажнаяСтоимостьФормТекЗаказчика= СебистоимостьПечатныхФормТекЗаказчика; ИначеЕсли (ПродажнаяСтоимостьФормТекЗаказчика<СебистоимостьПечатныхФормТекЗаказчика) Тогда // Предупреждение("Формы не могут продаваться дешевле себистоимости!"); ПродажнаяСтоимостьФормТекЗаказчика= СебистоимостьПечатныхФормТекЗаказчика; КонецЕсли; тбКонтрагенты.УстановитьЗначение(ТекСтр,"ПродажнаяСтоимостьФорм",ПродажнаяСтоимостьФормТекЗаказчика); КонецЕсли; ИзмПродажнаяСтоимостьФорм(); ИначеЕсли ИдентификаторКолонки="УстановленнаяЦенаБезФорм" Тогда УстановленнаяЦенаБезФормТекЗаказчика=ПрЗначение; тбКонтрагенты.УстановитьЗначение(ТекСтр,"УстановленнаяЦенаБезФорм",УстановленнаяЦенаБезФормТекЗаказчика); ИзмУстановленнаяЦенаБезФорм(); ИначеЕсли ИдентификаторКолонки="УстановленнаяЦена" Тогда УстановленнаяЦенаТекЗаказчика=ПрЗначение; тбКонтрагенты.УстановитьЗначение(ТекСтр,"УстановленнаяЦена",УстановленнаяЦенаТекЗаказчика); ИзмУстановленнаяЦенаСФормами(); ИначеЕсли ИдентификаторКолонки="Откат" Тогда ОткатТекЗаказчика=ПрЗначение; тбКонтрагенты.УстановитьЗначение(ТекСтр,"Откат",ОткатТекЗаказчика); ИзмОткат(); ИначеЕсли ИдентификаторКолонки="УстановленнаяЦенаПоДокументам" Тогда УстановленнаяЦенаПоДокументамТекЗаказчика=ПрЗначение; тбКонтрагенты.УстановитьЗначение(ТекСтр,"УстановленнаяЦенаПоДокументам",УстановленнаяЦенаПоДокументамТекЗаказчика); ИзмУстановленнаяЦенаПоДокументам(); ИначеЕсли ИдентификаторКолонки="НестандартныйОбъем" Тогда НестандартныйОбъемТекЗаказчика=ПрЗначение; тбКонтрагенты.УстановитьЗначение(ТекСтр,"НестандартныйОбъем",НестандартныйОбъемТекЗаказчика); ИзмНестандартОбъем(); КонецЕсли; // РентабельностьТекЗаказчика=РасчитатьРентабельностьЗаказа(ТаблицаРасчетнаяМассаТекЗаказчика,УстановленныйОбъемТекЗаказчика,УстановленнаяЦенаТекЗаказчика); // ОбновитьТаблицыДокумента(); КонецЕсли; КонецПроцедуры // =============================== Процедура ТППродажа_ПриАктивизацииСтроки(ТабличноеПоле) ТекСтр=ТабличноеПоле.ТекущаяСтрока; тбКонтрагенты.ТекущаяСтрока(ТекСтр); УстТекущиеСтрокиТаблиц(); Форма.Обновить(); КонецПроцедуры //====================================================================== Процедура ТППродажа_ПриВыводеСтроки(ТабличноеПоле,ОформлениеСтроки,ДанныеСтроки,ТипРегиона) Если ТипРегиона=3 Тогда ОформлениеСтроки.Ячейки.ЗаказВакиля.Текст=ДанныеСтроки.ЗаказВакиля.НомерДок; фДругаяСтоимостьФормТекЗаказчика=ДанныеСтроки.фДругаяСтоимостьФорм; СписокЗначений=СоздатьОбъект("СписокЗначений"); СписокЗначений.ДобавитьЗначение(0,"В цене"); СписокЗначений.ДобавитьЗначение(1,"Отдельно"); НЗ=СписокЗначений.НайтиЗначение(фДругаяСтоимостьФормТекЗаказчика); Текст=""; СписокЗначений.ПолучитьЗначение(НЗ,Текст); ОформлениеСтроки.Ячейки.фДругаяСтоимостьФорм.Текст=Текст; КонецЕсли; КонецПроцедуры // // =============================== Процедура ТПКонтрагентыПодчДоки_ПриАктивизацииСтроки(ТабличноеПоле) ТекСтр=ТабличноеПоле.ТекущаяСтрока; тбКонтрагенты.ТекущаяСтрока(ТекСтр); УстТекущиеСтрокиТаблиц(); Форма.Обновить(); КонецПроцедуры //====================================================================== Процедура ТПКонтрагентыПодчДоки_ПриВыводеСтроки(ТабличноеПоле,ОформлениеСтроки,ДанныеСтроки,ТипРегиона) Если ТипРегиона=3 Тогда ОформлениеСтроки.Ячейки.ЗаказВакиля.Текст=ДанныеСтроки.ЗаказВакиля.НомерДок; КонецЕсли; КонецПроцедуры //====================================================================== Процедура ТПКонтрагентыПодчДоки_Выбор(ТабличноеПоле,_Строка,_Колонка,ТипРегиона) Если ТипРегиона=3 Тогда ИдентификаторКолонки=_Колонка.Имя; Если ИдентификаторКолонки="ЗаказВакиля" Тогда уу=1; КонецЕсли; КонецЕсли; КонецПроцедуры //------------------------------------------------------------------------------------------------------------ Процедура ПриНажатииКнопкиКлавиатуры(КодКлавиши,Alt,Shift,Ctrl,Символ,фСтандартОбр) Insert =45; Delete =46; Enter =13; Если Форма.ТолькоПросмотр()=1 Тогда Возврат; КонецЕсли; ИдентификаторАктивногоЭлемента=Форма.АктивныйЭлемент(); Если КодКлавиши=Insert Тогда Если ИдентификаторАктивногоЭлемента="тбОплаты" Тогда ИзмОплата(3,1); фСтандартОбр=0; ИначеЕсли ИдентификаторАктивногоЭлемента="ТаблицаДизайновДляМенеджера" Тогда ИзмДизайны(1,"ТаблицаДизайновДляМенеджера"); фСтандартОбр=0; //ИначеЕсли ИдентификаторАктивногоЭлемента="тбМасса" Тогда // ВыборМассы(1,"Масса"); // фСтандартОбр=0; //ИначеЕсли ИдентификаторАктивногоЭлемента="тбТираж" Тогда // ВыборМассы(1,"Тираж"); // фСтандартОбр=0; КонецЕсли; ИначеЕсли КодКлавиши=Delete Тогда Если ИдентификаторАктивногоЭлемента="тбОплаты" Тогда ИзмОплата(3,2); фСтандартОбр=0; //ИначеЕсли ИдентификаторАктивногоЭлемента="тбМасса" Тогда // ВыборМассы(2,"Масса"); // фСтандартОбр=0; //ИначеЕсли ИдентификаторАктивногоЭлемента="тбТираж" Тогда // ВыборМассы(2,"Тираж"); // фСтандартОбр=0; ИначеЕсли ИдентификаторАктивногоЭлемента="ТаблицаДизайновДляТехнолога" Тогда ИзмДизайны(2,"ТаблицаДизайновДляТехнолога"); фСтандартОбр=0; //ИначеЕсли ИдентификаторАктивногоЭлемента="тбКраски" Тогда // ВыборКраски(2); // фСтандартОбр=0; КонецЕсли; КонецЕсли; КонецПроцедуры // =============================== тбРасчетнаяМассаДляТекКонтрагента=СоздатьОбъект("ТаблицаЗначений"); тбОбщая=СоздатьОбъект("ТаблицаЗначений"); тбОбщая.НоваяКолонка("Наименование","Строка",,,"Наименование",10); тбОбщая.НоваяКолонка("Норма","Число",18,5,"Норма расхода",5); тбОбщая.НоваяКолонка("Сумма","Число",18,4,"Сумма, грн",5); тбОбщая.НоваяКолонка("ВложеннаяТаблица"); тбПроцессы =СоздатьОбъект("ТаблицаЗначений"); тбНакладныеЗатраты =СоздатьОбъект("ТаблицаЗначений"); тбЗатратыКрасок=СоздатьОбъект("ТаблицаЗначений"); тбБракИЗатраты=СоздатьОбъект("ТаблицаЗначений"); тбСтоимость=СоздатьОбъект("ТаблицаЗначений"); тбСтоимостьБезКлише=СоздатьОбъект("ТаблицаЗначений"); спИстория=СоздатьОбъект("СписокЗначений"); ТекПозицияВИстории=0; ИТСтрокиДокумента=СоздатьОбъект("ИндексированнаяТаблица"); ИТСтрокиДокумента.НоваяКолонка("Код"); ИТСтрокиДокумента.НоваяКолонка("Дизайн"); ИТСтрокиДокумента.НоваяКолонка("ШагПечати"); ИТСтрокиДокумента.НоваяКолонка("ШиринаДорожки"); ИТСтрокиДокумента.НоваяКолонка("ВысотаДизайна"); ИТСтрокиДокумента.НоваяКолонка("ШиринаДизайна"); ИТСтрокиДокумента.НоваяКолонка("КолДорожек"); ИТСтрокиДокумента.НоваяКолонка("БоковаяЗакладка"); ИТСтрокиДокумента.НоваяКолонка("НижняяЗакладка"); ИТСтрокиДокумента.НоваяКолонка("ВерхняяЗакладка"); ИТСтрокиДокумента.НоваяКолонка("ДлинаДна"); ИТСтрокиДокумента.НоваяКолонка("ШиринаРучки"); ИТСтрокиДокумента.НоваяКолонка("ДлинаРучки"); ИТСтрокиДокумента.НоваяКолонка("ВесРучки"); ИТСтрокиДокумента.НоваяКолонка("ТипПакета"); ИТСтрокиДокумента.НоваяКолонка("ТипРучки"); ИТСтрокиДокумента.НоваяКолонка("ЗамесРучки"); ИТСтрокиДокумента.НоваяКолонка("СостояниеДизайна"); ИТСтрокиДокумента.НоваяКолонка("РисунокДизайна"); ИТСтрокиДокумента.НоваяКолонка("РазверткаДизайна"); ИТСтрокиДокумента.НоваяКолонка("Заказчик"); ИТСтрокиДокумента.НоваяКолонка("ВысотаФормы"); ИТСтрокиДокумента.НоваяКолонка("ШиринаФормы"); ИТСтрокиДокумента.НоваяКолонка("ТаблицаКрасок"); ИТСтрокиДокумента.НоваяКолонка("КоэфДизайнаВЗаказе"); ИТСтрокиДокумента.НоваяКолонка("НомерСтрокиДокумента"); ИТСтрокиДокумента.НоваяКолонка("Вес1ТысячиПродукции"); ИТСтрокиДокумента.НоваяКолонка("ВидНамотки"); ИТСтрокиДокумента.НоваяКолонка("ЕстьМетка"); ИТСтрокиДокумента.НоваяКолонка("РасположениеМетки"); ИТСтрокиДокумента.НоваяКолонка("РастояниеМеждуМетками"); ИТСтрокиДокумента.НоваяКолонка("РастояниеОтРисункаДоМетки"); ИТСтрокиДокумента.НоваяКолонка("ВысотаМетки"); ИТСтрокиДокумента.НоваяКолонка("ШиринаМетки"); ИТСтрокиДокумента.НоваяКолонка("ЕстьПоля"); ИТСтрокиДокумента.НоваяКолонка("ПолеСправа"); ИТСтрокиДокумента.НоваяКолонка("ПолеСлева"); тбОплаты.НоваяКолонка("Процент","Число",3,0,"% оплаты",8); тбОплаты.НоваяКолонка("КвоДней","Число",5,0,"К-во дней",8); тбИсторияДокумента=СоздатьОбъект("ТаблицаЗначений"); тбИсторияДокумента.НоваяКолонка("Пользователь","Справочник.Пользователи"); тбИсторияДокумента.НоваяКолонка("ДатаИзменения","Дата"); тбИсторияДокумента.НоваяКолонка("ВремяИзменения","Строка",10); тбИсторияДокумента.НоваяКолонка("Атрибут","Строка",100); тбИсторияДокумента.НоваяКолонка("Действие","Строка",100); НизкоеДавление =10; ВысокоеДавление = 11; СчитаемОтМассы=1;СчитаемОтТиража=2; ОЗУМ=Константа.ПодразделениеУпаковка; Никатор=Константа.ПодразделениеПакеты; КоллекцияНашихФирм=СоздатьОбъект("АссоциативныйВектор"); КоллекцияНашихФирм.Добавить(ОЗУМ,"ОЗУМ"); КоллекцияНашихФирм.Добавить(Никатор,"Никатор"); //ОбщаяРасчетнаяТаблица=СоздатьОбъект("ТаблицаЗначений"); ОбщаяРасчетнаяТаблица.НоваяКолонка("Тираж","Число",15,4); ОбщаяРасчетнаяТаблица.НоваяКолонка("Масса","Число",15,4); ОбщаяРасчетнаяТаблица.НоваяКолонка("НормаОсновногоМатериала","Число",10,4); ОбщаяРасчетнаяТаблица.НоваяКолонка("НормаМатериалаЛаминации1","Число",10,4); ОбщаяРасчетнаяТаблица.НоваяКолонка("НормаМатериалаЛаминации2","Число",10,4); ОбщаяРасчетнаяТаблица.НоваяКолонка("Себистоимость","Число",19,4); ОбщаяРасчетнаяТаблица.НоваяКолонка("НеРентабельно","Число",15,4); ОбщаяРасчетнаяТаблица.НоваяКолонка("Прибыльно","Число",15,4); ОбщаяРасчетнаяТаблица.НоваяКолонка("Премиально","Число",15,4); ОбщаяРасчетнаяТаблица.НоваяКолонка("ДопНакруткаНеРентабельно","Число",15,4); ОбщаяРасчетнаяТаблица.НоваяКолонка("ДопНакруткаПрибыльно","Число",15,4); ОбщаяРасчетнаяТаблица.НоваяКолонка("ДопНакруткаПремиально","Число",15,4); ОбщаяРасчетнаяТаблица.НоваяКолонка("Кол_квМТиража","Число",10,2); ОбщаяРасчетнаяТаблица.НоваяКолонка("КолПогонМетровТиража","Число",10,2); ОбщаяРасчетнаяТаблица.НоваяКолонка("СтоимостьНеРентабельно","Число",19,4); ОбщаяРасчетнаяТаблица.НоваяКолонка("СтоимостьОтсрочкиНеРентабельно","Число",19,4,); ОбщаяРасчетнаяТаблица.НоваяКолонка("ПродСтоимостьНеРентабельно","Число",19,4,); ОбщаяРасчетнаяТаблица.НоваяКолонка("СтоимостьПрибыльно","Число",19,4); ОбщаяРасчетнаяТаблица.НоваяКолонка("СтоимостьОтсрочкиПрибыльно","Число",19,4); ОбщаяРасчетнаяТаблица.НоваяКолонка("ПродСтоимостьПрибыльно","Число",19,4); ОбщаяРасчетнаяТаблица.НоваяКолонка("СтоимостьПремиально","Число",19,4,); ОбщаяРасчетнаяТаблица.НоваяКолонка("СтоимостьОтсрочкиПремиально","Число",19,4); ОбщаяРасчетнаяТаблица.НоваяКолонка("ПродСтоимостьПремиально","Число",19,4); ОбщаяТаблицаКрасок=СоздатьОбъект("ИндексированнаяТаблица"); спДоставка.ДобавитьЗначение(0,"Заказчика"); спДоставка.ДобавитьЗначение(1,"Наша"); //1-"Собственная" //0-"Заказчика" //2-"Частичная" спТипПоставкиПечать.ДобавитьЗначение(1,"Собственная"); спТипПоставкиПечать.ДобавитьЗначение(0,"Заказчика"); спТипПоставкиПечать.ДобавитьЗначение(2,"Частичная"); спТипПоставкиПечать.Выгрузить(спТипПоставкиЛаминат1); спТипПоставкиПечать.Выгрузить(спТипПоставкиЛаминат2); итСтарыеУстановленныеЦены=СоздатьОбъект("ИндексированнаяТаблица"); итСтарыеУстановленныеЦены.НоваяКолонка("Контрагент"); итСтарыеУстановленныеЦены.НоваяКолонка("УстановленнаяЦена"); итСтарыеУстановленныеЦены.ДобавитьИндекс("инКонтрагент","Контрагент"); НестандартныеЧислаВДокументах=0; ДатаНачалаСебистоимостьМинусВырубка =Дата(2009,11,06); КлассификаторЕдИзм=СоздатьОбъект("Справочник.КлассификаторЕдИзм"); КлассификаторЕдИзм.НайтиПоНаименованию("кг.",0,1); ЕдИзмКГ=КлассификаторЕдИзм.ТекущийЭлемент(); КлассификаторЕдИзм.НайтиПоНаименованию("шт.",0,1); ЕдИзмШТ=КлассификаторЕдИзм.ТекущийЭлемент(); КоллекцияЕдИзм=СоздатьОбъект("АссоциативныйВектор"); КоллекцияЕдИзм.Добавить(ЕдИзмКГ,"КГ"); КоллекцияЕдИзм.Добавить(ЕдИзмШТ,"ШТ"); фЗапечаткаТекущДизайна=1; фПоказатьКраскиФормы=1;