Заказы на доработку 1С (сервис удаленной работы)

Хранилище

База знаний
Неназначенных незавершенных заказов: 2
Бесплатные отчеты, обработки, конфигурации, внешние компоненты для 1С Статьи, описание работы, методики по работе с 1С

Здравствуйте, гость ( Войти | Зарегистрироваться )




>  Внешний счет на оплату
EvgenM
Отправлено: 14.10.14, 7:07


Общительный
**

Группа: Пользователи
Сообщений: 10
Регистрация: 01.10.14
Пользователь №: 38843


Petre, можно пару вопросов по самому коду ?
Тут как бы разобраться хочется . ))

Функция ШтрихКодСервер(ТоварП)
    
    //тут объявляем новый запрос
    Запрос = Новый Запрос;
    //сам запрос
    Запрос.Текст =
        "ВЫБРАТЬ
        |    ШтрихкодыНоменклатуры.Штрихкод
        |ИЗ
        |    РегистрСведений.ШтрихкодыНоменклатуры КАК ШтрихкодыНоменклатуры
        |ГДЕ
        |    ШтрихкодыНоменклатуры.Номенклатура = &Товар";
        //передаем в запрос переменную, которая передается в функцию
    Запрос.УстановитьПараметр("Товар", ТоварП);
    //указываем выгрузку данных запроса в переменную "РЗ"
    РЗ = Запрос.Выполнить();
    //объяляем новую переменную "ШК"
    ШК = "";
    // ставим условие "если в результате выгрузки запроса есть данные
    // тогда продолжаем"
    Если Не РЗ.Пустой() Тогда
        //вот здесь не совсем понятно, почему мы объявляем еще одну переменную и
        //что мы выбираем ?
        ВЗ = РЗ.Выбрать();
        //тут идет перебор выборки
        ВЗ.Следующий();
        //опять слегка не понятно, если мы запросом вытягиваем только значение штрих-кода
        //зачем тогда в переменной еще и указание на ШК ?
        ШК = ВЗ.Штрихкод;
        
    КонецЕсли;
    Возврат ШК;
КонецФункции

  Форум: Программирование в 1С Предприятие 8.3 · Просмотр сообщения: #92118 · Ответов: 6 · Просмотров: 4893
 

>  Внешний счет на оплату
EvgenM
Отправлено: 13.10.14, 15:43


Общительный
**

Группа: Пользователи
Сообщений: 10
Регистрация: 01.10.14
Пользователь №: 38843


Petre, СПАСИБИЩЕ !!!
Все получилось (правда пока на тестовой), но думаю на основной трабл не возникнет.
  Форум: Программирование в 1С Предприятие 8.3 · Просмотр сообщения: #92101 · Ответов: 6 · Просмотров: 4893
 

>  Внешний счет на оплату
EvgenM
Отправлено: 13.10.14, 15:20


Общительный
**

Группа: Пользователи
Сообщений: 10
Регистрация: 01.10.14
Пользователь №: 38843


Цитата(Petre @ 13.10.14, 14:57) *
Про запросы в цикле и вообще обход ТЧ вместо запроса к ТЧ пока промолчу.

Согласен, самому стыдно было выкладывать код.
Но отчет нужен был как обычно на "вчера", а у меня только так получилось.
В дальнейшем конечно переделаю, ну во всяком случае хочется в это верить.


По совету - ошибку дает.
{ВнешняяОбработка.СчетНаОплатуЕЮ.МодульОбъекта(912)}: Значение не является значением объектного типа (Штрихкод)
        ШК = ВЗ.Штрихкод;
  Форум: Программирование в 1С Предприятие 8.3 · Просмотр сообщения: #92099 · Ответов: 6 · Просмотров: 4893
 

>  Внешний счет на оплату
EvgenM
Отправлено: 13.10.14, 14:45


Общительный
**

Группа: Пользователи
Сообщений: 10
Регистрация: 01.10.14
Пользователь №: 38843



Доброго времени суток.
1С: Предприятие 8.3
Конфигурация:
УТ 11.1

Возникла необходимость при печати "Счет на оплату" выводить и штрих-код.
Решил все сделать внешней обработкой, для этого согласно уроку прошелся по "Обработка" - "ПечатьСчетовНаОплату".
Выбрал все функции и процедуры, перенес их вместе с макетом во внешнюю обработку.
Все работает хорошо, кроме самого основного штрих-кода.

Пересматривая код, заметил, что данные не вытягиваются запросом, а берутся с табличной части формы .
Уже хотел сделать через функцию и всеодно ниче не вышло.

Процедура ЗаполнитьТабличныйДокументСчетаНаОплату

Процедура ЗаполнитьТабличныйДокументСчетаНаОплату(ТабличныйДокумент, ДанныеДляПечати, ОбъектыПечати, КомплектыПечати, ПараметрыПечати)
    
    Перем КомплектПечатиПоСсылке;
    
    ШаблоныОшибок = Новый Структура;
    ШаблоныОшибок.Вставить("Товары", НСтр("ru = 'В документе %1 отсутствуют товары. Печать счета на оплату не требуется'"));
    ШаблоныОшибок.Вставить("ЗаменяющиеТовары", НСтр("ru = 'В документе %1 отсутствуют заменяющие товары. Печать счета на оплату не требуется'"));
    ШаблоныОшибок.Вставить("Этапы", НСтр("ru = 'В документе %1 отсутствуют этапы оплаты. Печать счета на оплату не требуется'"));
    
    ИспользоватьРучныеСкидки         = ПолучитьФункциональнуюОпцию("ИспользоватьРучныеСкидкиВПродажах");
    ИспользоватьАвтоматическиеСкидки = ПолучитьФункциональнуюОпцию("ИспользоватьАвтоматическиеСкидкиВПродажах");
    СтруктураИмяДопКолонки = Новый Структура("ИмяКолонкиКодов", ФормированиеПечатныхФорм.ИмяДополнительнойКолонки());    
    
    ДанныеПечати = ДанныеДляПечати.РезультатПоШапке.Выбрать();
    ЭтапыОплаты = ДанныеДляПечати.РезультатПоЭтапамОплаты.Выгрузить();
    Товары = ДанныеДляПечати.РезультатПоТабличнойЧасти.Выгрузить();
    
    ЭтапыЗалоговойТары = ЭтапыОплаты.НайтиСтроки(Новый Структура("ЭтоЗалогЗаТару", Истина));
    ТолькоЗалогЗаТару = ЭтапыЗалоговойТары.Количество() = ЭтапыОплаты.Количество() И ЭтапыЗалоговойТары.Количество() > 0;
    
    Если Товары.Колонки.Найти("Содержание")=Неопределено Тогда
        ЕстьСодержание = Ложь;
    Иначе
        ЕстьСодержание = Истина;
    КонецЕсли;
    
    ПоказыватьНДС = Константы.ВыводитьДопКолонкиНДС.Получить();
    ПервыйДокумент = Истина;
    
    Пока ДанныеПечати.Следующий() Цикл
        
        Отказ = Ложь;
        
        ПодготовкаДляПечатиКомплектов(ДанныеПечати, КомплектыПечати, КомплектПечатиПоСсылке, Отказ);
        Если Отказ Тогда
            Продолжить;
        КонецЕсли;
        
        СтруктураПоиска = Новый Структура("Ссылка", ДанныеПечати.Ссылка);
        
        ТаблицаТовары = Товары.НайтиСтроки(СтруктураПоиска);
        ТаблицаЭтапыОплаты = ЭтапыОплаты.НайтиСтроки(СтруктураПоиска);
        
        ПроверкаЗаполненияДокумента(ДанныеПечати, ТаблицаТовары, ТаблицаЭтапыОплаты, ШаблоныОшибок, Отказ);
        Если Отказ Тогда
            Продолжить;
        КонецЕсли;
        
        Если ПервыйДокумент Тогда
            ПервыйДокумент = Ложь;
        Иначе
            ТабличныйДокумент.ВывестиГоризонтальныйРазделительСтраниц();
        КонецЕсли;
        
        НомерСтрокиНачало = ТабличныйДокумент.ВысотаТаблицы + 1;
        
        ЗаголовокСкидки = ФормированиеПечатныхФорм.НужноВыводитьСкидки(ТаблицаТовары, ИспользоватьРучныеСкидки Или ИспользоватьАвтоматическиеСкидки);
        ЕстьСкидки = ЗаголовокСкидки.ЕстьСкидки;
        
        СуффиксОбласти = ?(ДанныеПечати.УчитыватьНДС И НЕ ТолькоЗалогЗаТару И ПоказыватьНДС, "СНДС", "") + ?(ЕстьСкидки, "СоСкидкой", "");
        
        Макет = Новый ТабличныйДокумент;
        ЗаполнитьРеквизитыШапкиСчетаНаОплату(ДанныеПечати, Макет, ТабличныйДокумент, ТаблицаЭтапыОплаты, ТаблицаТовары);
        
        Если ДанныеПечати.ЧастичнаяОплата ИЛИ ТипЗнч(ДанныеПечати.ДокументОснование) = Тип("ДокументСсылка.ОтчетКомитенту") Тогда
            
            ОбластьШапкаТаблицы = Макет.ПолучитьОбласть("ШапкаТаблицыЧастичнаяОплата");
            ОбластьШапкаТаблицы.Параметры.Заполнить(СтруктураИмяДопКолонки);
            ТабличныйДокумент.Вывести(ОбластьШапкаТаблицы);
            
            ОбластьСтрокаТаблицы = Макет.ПолучитьОбласть("СтрокаТаблицыЧастичнаяОплата");
            ОбластьСтрокаТаблицы.Параметры.Заполнить(ДанныеПечати);
            ТабличныйДокумент.Вывести(ОбластьСтрокаТаблицы);
            
            ОбластьИтого = Макет.ПолучитьОбласть("ПодвалТаблицыЧастичнаяОплата");
            СтруктураДанныхИтого = Новый Структура;
            СтруктураДанныхИтого.Вставить("Всего", ДанныеПечати.СуммаДокумента);
            ОбластьИтого.Параметры.Заполнить(СтруктураДанныхИтого);
            ОбластьИтого.Параметры.Заполнить(ДанныеПечати);
            ТабличныйДокумент.Присоединить(ОбластьИтого);
            
            // Вывести ИтогоНДС
            СоответствиеСтавокНДС = Новый Соответствие;
            Если ДанныеПечати.УчитыватьНДС И НЕ ТолькоЗалогЗаТару Тогда
                ОбластьИтогоНДС = Макет.ПолучитьОбласть("ПодвалТаблицыНДС");
                Для Каждого СтрокаТовара Из ТаблицаТовары Цикл
                    СуммаНДС = СоответствиеСтавокНДС[СтрокаТовара.СтавкаНДС];
                    Если СуммаНДС = Неопределено Тогда
                        СуммаНДС = СтрокаТовара.СуммаНДС;
                    Иначе
                        СуммаНДС = СуммаНДС + СтрокаТовара.СуммаНДС;
                    КонецЕсли;
                    СоответствиеСтавокНДС.Вставить(СтрокаТовара.СтавкаНДС, СуммаНДС);
                КонецЦикла;
                Для Каждого ТекСтавкаНДС Из СоответствиеСтавокНДС Цикл
                    СтруктураДанныхИтогоНДС = Новый Структура;
                    СтруктураДанныхИтогоНДС.Вставить("НДС", ФормированиеПечатныхФорм.ТекстНДСПоСтавке(ТекСтавкаНДС.Ключ, ДанныеПечати.ЦенаВключаетНДС));
                    Если ЗначениеЗаполнено(ТекСтавкаНДС.Значение) Тогда
                        СтруктураДанныхИтогоНДС.Вставить("ВсегоНДС", ФормированиеПечатныхФорм.ФорматСумм(ТекСтавкаНДС.Значение /100 * ДанныеПечати.ПроцентОплаты));
                    Иначе
                        СтруктураДанныхИтогоНДС.Вставить("ВсегоНДС","-");
                    КонецЕсли;
                    ОбластьИтогоНДС.Параметры.Заполнить(СтруктураДанныхИтогоНДС);
                    ТабличныйДокумент.Вывести(ОбластьИтогоНДС);
                КонецЦикла;
                ОбластьПодвалСНДС = Макет.ПолучитьОбласть("ПодвалТаблицыВсего");
                СтруктураДанныхПодвалСНДС = Новый Структура("ВсегоСНДС", ФормированиеПечатныхФорм.ФорматСумм(ДанныеПечати.СуммаДокумента));
                ОбластьПодвалСНДС.Параметры.Заполнить(СтруктураДанныхПодвалСНДС);
                ТабличныйДокумент.Вывести(ОбластьПодвалСНДС);
            КонецЕсли;
            
            // Вывести Сумму прописью
            ОбластьМакета = Макет.ПолучитьОбласть("СуммаПрописьюЧастичныйСчет");
            СуммаПрописью = НСтр("ru='Всего на сумму %СуммаПрописью%'");
            СуммаПрописью = СтрЗаменить(СуммаПрописью, "%СуммаПрописью%", РаботаСКурсамиВалют.СформироватьСуммуПрописью(ДанныеПечати.СуммаДокумента, ДанныеПечати.Валюта));
            СтруктураДанныхСуммаПрописью = Новый Структура("СуммаПрописью", СуммаПрописью);
            ОбластьМакета.Параметры.Заполнить(СтруктураДанныхСуммаПрописью);
            ТабличныйДокумент.Вывести(ОбластьМакета);
            
        Иначе
        
            // Таблица "Товары"
            ОбластьШапкаТаблицы          = Макет.ПолучитьОбласть("ШапкаТаблицы" + СуффиксОбласти);
            ОбластьСтрокаТаблицыСтандарт = Макет.ПолучитьОбласть("СтрокаТаблицы" + СуффиксОбласти);
            ОбластьПодвалТаблицы         = Макет.ПолучитьОбласть("ПодвалТаблицы" + СуффиксОбласти);
            ОбластьПодвалНДС             = Макет.ПолучитьОбласть("ПодвалТаблицыНДС");
            
            ИспользоватьНаборы = Ложь;
            Если Товары.Колонки.Найти("ЭтоНабор") <> Неопределено Тогда
                ИспользоватьНаборы = Истина;
                
                ОбластьСтрокаТаблицыНабор         = Макет.ПолучитьОбласть("СтрокаТаблицы" + СуффиксОбласти + "Набор");
                ОбластьСтрокаТаблицыКомплектующие = Макет.ПолучитьОбласть("СтрокаТаблицы" + СуффиксОбласти + "Комплектующие");
            КонецЕсли;
            
            ПустыеДанные = НаборыСервер.ПустыеДанные();
            ВыводШапки = 0;
            
            Если ДанныеПечати.УчитыватьНДС И НЕ ТолькоЗалогЗаТару Тогда
                СуффиксОбластиПодвал = "СНДС" + ?(ЕстьСкидки, "СоСкидкой", "");
                ОбластьПодвалСНДС = Макет.ПолучитьОбласть("ПодвалТаблицыВсего" + СуффиксОбластиПодвал);
            КонецЕсли;
            
            Если ЕстьСкидки Тогда
                СтруктураЗаголовокСкидки = Новый Структура("Скидка, СуммаБезСкидки",
                    ЗаголовокСкидки.Скидка,
                    ЗаголовокСкидки.СуммаСкидки);
                ОбластьШапкаТаблицы.Параметры.Заполнить(СтруктураЗаголовокСкидки);
            КонецЕсли;
            ОбластьШапкаТаблицы.Параметры.Заполнить(СтруктураИмяДопКолонки);
            ОбластьСуммаПрописью = Макет.ПолучитьОбласть(?(ДанныеПечати.СчетКВозврату, "СуммаПрописьюКВозврату", "СуммаПрописью"));
            
            МассивПроверкиВывода = Новый Массив;
            
            Сумма = 0;
            СуммаНДС = 0;
            ВсегоСкидок = 0;
            ВсегоБезСкидок = 0;
            НомерСтроки = 0;
            СоответствиеСтавокНДС = Новый Соответствие;
            Для Каждого СтрокаТовары Из ТаблицаТовары Цикл
                
                Если НаборыСервер.ИспользоватьОбластьНабор(СтрокаТовары, ИспользоватьНаборы) Тогда
                    ОбластьСтрокаТаблицы = ОбластьСтрокаТаблицыНабор;
                ИначеЕсли НаборыСервер.ИспользоватьОбластьКомплектующие(СтрокаТовары, ИспользоватьНаборы) Тогда
                    ОбластьСтрокаТаблицы = ОбластьСтрокаТаблицыКомплектующие;
                Иначе
                    ОбластьСтрокаТаблицы = ОбластьСтрокаТаблицыСтандарт;
                КонецЕсли;
                
                Если НаборыСервер.ВыводитьТолькоЗаголовок(СтрокаТовары, ИспользоватьНаборы) Тогда
                    НомерСтрокиПечать = "";
                Иначе
                    НомерСтроки = НомерСтроки + 1;
                    НомерСтрокиПечать = НомерСтроки;
                КонецЕсли;
                
                Если НомерСтроки = 0 И ВыводШапки <> 2 Тогда
                    ВыводШапки = 1;
                КонецЕсли;
                
                ПрефиксИПостфикс = НаборыСервер.ПолучитьПрефиксИПостфикс(СтрокаТовары, ИспользоватьНаборы);
                
                Если ЕстьСодержание Тогда
                    Товар = ПрефиксИПостфикс.Префикс + НоменклатураКлиентСервер.ПредставлениеНоменклатурыДляПечати(
                        СтрокаТовары.НаименованиеПолное,
                        СтрокаТовары.Характеристика,
                    //    СтрокаТовары.Описание,
                        ,
                        , // Серия
                        СтрокаТовары.Содержание,
                        СтрокаТовары.ЭтоВозвратнаяТара) + ПрефиксИПостфикс.Постфикс;
                Иначе
                    Товар = ПрефиксИПостфикс.Префикс + НоменклатураКлиентСервер.ПредставлениеНоменклатурыДляПечати(
                        СтрокаТовары.НаименованиеПолное,
                        СтрокаТовары.Характеристика,
                    //    СтрокаТовары.Описание,
                        ,
                        , // Серия
                        , //Содержание
                        СтрокаТовары.ЭтоВозвратнаяТара) + ПрефиксИПостфикс.Постфикс;
                КонецЕсли;
                СтруктураДанныхСтроки = Новый Структура;
                СтруктураДанныхСтроки.Вставить("Товар", Товар);
    //////////////////////////////////            
                СтруктураДанныхСтроки.Вставить("ШтрихКод", ШтрихКодСервер(СтрокаТовары.Номенклатура));
    //////////////////////////////////                            
                СтруктураДанныхСтроки.Вставить("НомерСтроки", НомерСтрокиПечать);
                ОбластьСтрокаТаблицы.Параметры.Заполнить(СтрокаТовары);
                Если ЗаголовокСкидки.ЕстьСкидки Тогда
                    СтруктураДанныхСтроки.Вставить("СуммаСкидки",
                        ?(ЗаголовокСкидки.ТолькоНаценка,- СтрокаТовары.СуммаСкидки,СтрокаТовары.СуммаСкидки));
                КонецЕсли;
                
                Если ЗначениеЗаполнено(СтруктураИмяДопКолонки.ИмяКолонкиКодов) Тогда
                    СтруктураДанныхСтроки.Вставить("Артикул", СтрокаТовары[СтруктураИмяДопКолонки.ИмяКолонкиКодов]);
                КонецЕсли;
                
                ОбластьСтрокаТаблицы.Параметры.Заполнить(СтруктураДанныхСтроки);
                
                Если НаборыСервер.ВыводитьТолькоЗаголовок(СтрокаТовары, ИспользоватьНаборы) Тогда
                    ОбластьСтрокаТаблицы.Параметры.Заполнить(ПустыеДанные);
                КонецЕсли;
                
                МассивПроверкиВывода.Очистить();
                МассивПроверкиВывода.Добавить(ОбластьСтрокаТаблицы);
                Если НомерСтроки = ТаблицаТовары.Количество() Тогда
                    МассивПроверкиВывода.Добавить(ОбластьПодвалТаблицы);
                    МассивПроверкиВывода.Добавить(ОбластьПодвалНДС);
                    МассивПроверкиВывода.Добавить(ОбластьСуммаПрописью);
                КонецЕсли;
                
                Если ТабличныйДокумент.ПроверитьВывод(МассивПроверкиВывода) Тогда
                    Если (НомерСтроки = 1 И ВыводШапки = 0) ИЛИ (НомерСтроки = 0 И ВыводШапки = 1) Тогда
                        ВыводШапки = 2;
                        ТабличныйДокумент.Вывести(ОбластьШапкаТаблицы);
                    КонецЕсли;
                Иначе
                    ТабличныйДокумент.ВывестиГоризонтальныйРазделительСтраниц();
                    ТабличныйДокумент.Вывести(ОбластьШапкаТаблицы);
                КонецЕсли;
                
                ТабличныйДокумент.Вывести(ОбластьСтрокаТаблицы);
                
                Если Не НаборыСервер.ИспользоватьОбластьКомплектующие(СтрокаТовары, ИспользоватьНаборы) Тогда
                    
                    Сумма = Сумма + СтрокаТовары.Сумма;
                    СуммаНДС = СуммаНДС + СтрокаТовары.СуммаНДС;
                    
                    Если ЕстьСкидки Тогда
                        ВсегоСкидок = ВсегоСкидок + СтрокаТовары.СуммаСкидки;
                        ВсегоБезСкидок = ВсегоБезСкидок + СтрокаТовары.СуммаБезСкидки;
                    КонецЕсли;
                
                    Если ДанныеПечати.УчитыватьНДС И НЕ ТолькоЗалогЗаТару Тогда
                        СуммаНДСПоСтавке = СоответствиеСтавокНДС[СтрокаТовары.СтавкаНДС];
                        Если СуммаНДСПоСтавке = Неопределено Тогда
                            СуммаНДСПоСтавке = 0;
                        КонецЕсли;
                        СоответствиеСтавокНДС.Вставить(СтрокаТовары.СтавкаНДС, СуммаНДСПоСтавке + СтрокаТовары.СуммаНДС);
                    КонецЕсли;
                
                КонецЕсли;
                
            КонецЦикла;
            
            СтруктураДанныхВсегоСкидки = Новый Структура;
            
            // Подвал таблицы "Товары"
            Если ЕстьСкидки Тогда
                СтруктураДанныхВсегоСкидки.Вставить("ВсегоСкидок", ?(ЗаголовокСкидки.ТолькоНаценка,-ВсегоСкидок, ВсегоСкидок));
                СтруктураДанныхВсегоСкидки.Вставить("ВсегоБезСкидок", ВсегоБезСкидок);
                Если ДанныеПечати.УчитыватьНДС И НЕ ТолькоЗалогЗаТару Тогда
                    СтруктураДанныхВсегоСкидки.Вставить("ВсегоСуммаНДС", СуммаНДС);
                КонецЕсли;
            КонецЕсли;
            СтруктураДанныхВсегоСкидки.Вставить("Всего", ФормированиеПечатныхФорм.ФорматСумм(Сумма));
            ОбластьПодвалТаблицы.Параметры.Заполнить(СтруктураДанныхВсегоСкидки);
            ТабличныйДокумент.Вывести(ОбластьПодвалТаблицы);
            
            // Область "ПодвалТаблицыНДС"
            Если ДанныеПечати.УчитыватьНДС И НЕ ТолькоЗалогЗаТару Тогда
                
                Для Каждого ТекСтавкаНДС Из СоответствиеСтавокНДС Цикл
                    СтруктураДанныхПодвалНДС = Новый Структура;
                    СтруктураДанныхПодвалНДС.Вставить("НДС", ФормированиеПечатныхФорм.ТекстНДСПоСтавке(ТекСтавкаНДС.Ключ, ДанныеПечати.ЦенаВключаетНДС));
                    СтруктураДанныхПодвалНДС.Вставить("ВсегоНДС", ФормированиеПечатныхФорм.ФорматСумм(ТекСтавкаНДС.Значение, ,"-"));
                    ОбластьПодвалНДС.Параметры.Заполнить(СтруктураДанныхПодвалНДС);
                    ТабличныйДокумент.Вывести(ОбластьПодвалНДС);
                    
                КонецЦикла;
                СтруктураДанныхПодвалВсегоСНДС = Новый Структура;
                СтруктураДанныхПодвалНДС.Вставить("ВсегоСНДС", ФормированиеПечатныхФорм.ФорматСумм(Сумма + ?(ДанныеПечати.ЦенаВключаетНДС, 0, СуммаНДС)));
                ОбластьПодвалСНДС.Параметры.Заполнить(СтруктураДанныхПодвалНДС);
                ТабличныйДокумент.Вывести(ОбластьПодвалСНДС);
                
            Иначе
                СтруктураДанныхПодвалНДС = Новый Структура;
                СтруктураДанныхПодвалНДС.Вставить("НДС", НСтр("ru='Без налога (НДС)'"));
                СтруктураДанныхПодвалНДС.Вставить("ВсегоНДС", "-");
                ОбластьПодвалНДС.Параметры.Заполнить(СтруктураДанныхПодвалНДС);
                ТабличныйДокумент.Вывести(ОбластьПодвалНДС);
            КонецЕсли;
            
            // Вывести Сумму прописью
            СуммаКПрописи = Сумма + ?(ДанныеПечати.ЦенаВключаетНДС, 0, СуммаНДС);
            ИтоговаяСтрока = НСтр("ru='Всего наименований %Количество%, на сумму %Сумма%'");
            ИтоговаяСтрока = СтрЗаменить(ИтоговаяСтрока, "%Количество%", НомерСтроки);
            ИтоговаяСтрока = СтрЗаменить(ИтоговаяСтрока, "%Сумма%",      ФормированиеПечатныхФорм.ФорматСумм(СуммаКПрописи, ДанныеПечати.Валюта));
            
            СтруктураДанныхСуммаПрописью = Новый Структура;
            Если ДанныеПечати.СчетКВозврату Тогда
                
                СуммаКВозврату = ДанныеПечати.СуммаКВозврату;
                СуммаИтого = СуммаКПрописи-СуммаКВозврату;
                Если СуммаИтого < 0 Тогда
                    СуммаИтого = 0;
                КонецЕсли;
                СтруктураДанныхСуммаПрописью.Вставить("СуммаВозврата", ФормированиеПечатныхФорм.ФорматСумм(СуммаКВозврату, ДанныеПечати.Валюта));
                СтруктураДанныхСуммаПрописью.Вставить("СуммаИтогоКОплате", ФормированиеПечатныхФорм.ФорматСумм(СуммаИтого, ДанныеПечати.Валюта, "0"));
                СтруктураДанныхСуммаПрописью.Вставить("СуммаПрописью", РаботаСКурсамиВалют.СформироватьСуммуПрописью(СуммаИтого, ДанныеПечати.Валюта));
            Иначе
                
                СтруктураДанныхСуммаПрописью.Вставить("СуммаПрописью", РаботаСКурсамиВалют.СформироватьСуммуПрописью(СуммаКПрописи, ДанныеПечати.Валюта));
            КонецЕсли;
            
            СтруктураДанныхСуммаПрописью.Вставить("ИтоговаяСтрока", ИтоговаяСтрока);
            ОбластьСуммаПрописью.Параметры.Заполнить(СтруктураДанныхСуммаПрописью);
            ТабличныйДокумент.Вывести(ОбластьСуммаПрописью);
        КонецЕсли;
        ЗаполнитьРеквизитыПодвалаСчетаНаОплату(ДанныеПечати, Макет, ТабличныйДокумент, ТаблицаЭтапыОплаты, СоответствиеСтавокНДС, ПараметрыПечати);
        
        ЗавершениеДляПечатиКомплектов(КомплектыПечати, КомплектПечатиПоСсылке, ТабличныйДокумент, НомерСтрокиНачало);
        
        УправлениеПечатью.ЗадатьОбластьПечатиДокумента(ТабличныйДокумент, НомерСтрокиНачало, ОбъектыПечати, ДанныеПечати.Ссылка);
        
    КонецЦикла;
    
КонецПроцедуры


Функция ШтрихКодСервер(ТоварП)
    
    Запрос = Новый Запрос;
    Запрос.Текст =
        "ВЫБРАТЬ
        |    ШтрихкодыНоменклатуры.Штрихкод
        |ИЗ
        |    РегистрСведений.ШтрихкодыНоменклатуры КАК ШтрихкодыНоменклатуры
        |ГДЕ
        |    ШтрихкодыНоменклатуры.Номенклатура = &Товар";

    Запрос.УстановитьПараметр("Товар", ТоварП);

    РЗ = Запрос.Выполнить();

    Возврат РЗ;

КонецФункции


Как лучше всего сотворить чудо ?
  Форум: Программирование в 1С Предприятие 8.3 · Просмотр сообщения: #92095 · Ответов: 6 · Просмотров: 4893
 

>  Заполнение ТЧ на форме по выбору в другой ТЧ
EvgenM
Отправлено: 06.10.14, 13:58


Общительный
**

Группа: Пользователи
Сообщений: 10
Регистрация: 01.10.14
Пользователь №: 38843


Надеялся таки разобраться, но чую основательно заглох.

Вот весь код используемый в модуле формы.

Элементы.Номенклатура - динамический список.
Элементы.Полуфабрикаты - табличная часть на форме.

&НаКлиенте
Процедура НоменклатураПриАктивизацииСтроки(Элемент)
    
    ОбработкаСписка();
    
КонецПроцедуры

&НаКлиенте
Процедура ОбработкаСписка()
    
    СТЧ = Элементы.Номенклатура.ТекущаяСтрока;
    
    СТЧ2 = Элементы.Номенклатура.ТекущиеДанные;
    
    
    Если  СТЧ2.Артикул <> ""   тогда
        
        Массив=    ТехнологРасчет(СТЧ);  
        
        
        Для Каждого Стр Из Массив Цикл
            Структура = Массив;
            НС = Элементы.Полуфабрикаты.Добавить();
            НС.Наименование2 = Структура.Наименование2;
            НС.характеристика = Структура.характеристика;
        КонецЦикла;
        
    КонецЕсли;    
    
    
КонецПроцедуры



&НаСервере
Функция  ТехнологРасчет(СТЧИ)
    Запрос = Новый Запрос;
    
    Запрос.Текст = ("ВЫБРАТЬ
    |    Номенклатура.Спецификация КАК Наименование2,
    |    Номенклатура.Спецификация.ХарактеристикаПродукции КАК характеристика
    |ИЗ
    |    Справочник.Номенклатура КАК Номенклатура
    |ГДЕ
    |    Номенклатура.Ссылка = &Номенклатура"
    );        
    Запрос.УстановитьПараметр("Номенклатура", СТЧИ);
    Результат = Запрос.ВыполнитьПакет();
    
    Возврат Результат;
    
    
    
КонецФункции


Теперь уходит в цикл и сидит там - пока не прекращаю отладку.
  Форум: Программирование управляемых форм 1С 8.2 · Просмотр сообщения: #91896 · Ответов: 12 · Просмотров: 6088
 

>  Заполнение ТЧ на форме по выбору в другой ТЧ
EvgenM
Отправлено: 02.10.14, 7:48


Общительный
**

Группа: Пользователи
Сообщений: 10
Регистрация: 01.10.14
Пользователь №: 38843


Цитата(sava1 @ 01.10.14, 14:48) *
примера:

Не получилось ничего.
Мелочи упускаю походу из внимания.
  Форум: Программирование управляемых форм 1С 8.2 · Просмотр сообщения: #91771 · Ответов: 12 · Просмотров: 6088
 

>  Заполнение ТЧ на форме по выбору в другой ТЧ
EvgenM
Отправлено: 01.10.14, 14:37


Общительный
**

Группа: Пользователи
Сообщений: 10
Регистрация: 01.10.14
Пользователь №: 38843


Цитата(sava1 @ 01.10.14, 14:25) *
Код покажите

В пером посте ото и весь код.
Возврат и заполнение ТЧ так и не осилил.
Цитата(sava1 @ 01.10.14, 14:25) *
В типовых в общем модуле есть функция
ТаблицаЗначенийВМассив(ТаблицаЗначений) Экспорт

Спасибо, сейчас ее смотрю.

  Форум: Программирование управляемых форм 1С 8.2 · Просмотр сообщения: #91737 · Ответов: 12 · Просмотров: 6088
 

>  Заполнение ТЧ на форме по выбору в другой ТЧ
EvgenM
Отправлено: 01.10.14, 13:34


Общительный
**

Группа: Пользователи
Сообщений: 10
Регистрация: 01.10.14
Пользователь №: 38843


Цитата(sava1 @ 01.10.14, 13:13) *
результат запроса в массив, вернуть клиенту, заполнить ТП

Вот на этом пункте и застрял.
Не сумел нормально вернуть клиенту и заполнить ТЧ.
При возвращении на клиента ругается, что обращаюсь к процедуре как к функции.
Другие варианты просто писали, что превышен временный интервал.

Названия выводимые в запросе и самой ТЧ совпадают.
  Форум: Программирование управляемых форм 1С 8.2 · Просмотр сообщения: #91733 · Ответов: 12 · Просмотров: 6088
 

>  Заполнение ТЧ на форме по выбору в другой ТЧ
EvgenM
Отправлено: 01.10.14, 12:26


Общительный
**

Группа: Пользователи
Сообщений: 10
Регистрация: 01.10.14
Пользователь №: 38843


logist, извиняюсь, переделал.





 ! 

Правила, 11! В следующий раз картинки будут удалены.
 
  Форум: Программирование управляемых форм 1С 8.2 · Просмотр сообщения: #91731 · Ответов: 12 · Просмотров: 6088
 

>  Заполнение ТЧ на форме по выбору в другой ТЧ
EvgenM
Отправлено: 01.10.14, 11:16


Общительный
**

Группа: Пользователи
Сообщений: 10
Регистрация: 01.10.14
Пользователь №: 38843


Добрый день или другого времени суток.

УНФ для Украины, редакция 1.3
Управляемые формы.

Возникла необходимость сделать рабочее место технолога.
Что бы было видно какой товар обладает спецификацией и его содержимое.
Для этого создал обработку, навесил на три табличные части и динамический список(номенклатура).



Создал событие на динамическом списке "ПриАктивизацииЯчейки".

&НаКлиенте
Процедура НоменклатураПриАктивизацииЯчейки(Элемент)
        Сообщить("111");

       СТЧ = Элементы.Номенклатура.ТекущаяСтрока;
      
       СТЧ2 = Элементы.Номенклатура.ТекущиеДанные;
      
   Если  СТЧ2.Артикул <> ""   тогда
          
            ТехнологРасчет(СТЧ);  
          
        
            КонецЕсли;    

КонецПроцедуры


С помощью нее делаю выборку ссылки текущего выбранного значения в справочнике.
И передаю значение в процедуру на сервер, где вытаскиваю саму спецификацию.

&НаСервере
Процедура ТехнологРасчет(СТЧИ)
           Запрос = Новый Запрос;
          
         Запрос.Текст = ("ВЫБРАТЬ
         |    Номенклатура.Спецификация как Наименование2,
         |    Номенклатура.Спецификация.ХарактеристикаПродукции,
         |    Номенклатура.Спецификация.Состав.(
         |        Ссылка,
         |        НомерСтроки,
         |        ТипСтрокиСостава,
         |        Номенклатура,
         |        Характеристика,
         |        ЕдиницаИзмерения,
         |        Спецификация,
         |        Количество,
         |        КоличествоПродукции,
         |        ДоляСтоимости
         |    ) КАК Спецификация1
         |ИЗ
         |    Справочник.Номенклатура КАК Номенклатура
         |ГДЕ
         |    Номенклатура.Ссылка = &Номенклатура"
         );        
         Запрос.УстановитьПараметр("Номенклатура", СТЧИ);
         Результат = Запрос.ВыполнитьПакет();

          //
  
  КонецПроцедуры // ТехнологРасчет()


Но как ее загрузить в таблицу "СпецификацияПродукции" никак не могу разобраться.
Нашел множество подобных примеров, выкачал некоторые обработки с похожим принципом, но ниче не выходит.

Отвечу сразу на так любимый некоторыми совет : "М.Г.Радченко" читаю.



 ! 

Правила,п. 5,11
 


Картинка не вставилась.
  Форум: Программирование управляемых форм 1С 8.2 · Просмотр сообщения: #91730 · Ответов: 12 · Просмотров: 6088
 


Новые сообщения  Открытая тема (есть новые ответы)
Опрос  Опрос (есть новые голоса)
Нет новых сообщений  Открытая тема (нет новых ответов)
Нет новых голосов  Опрос (нет новых голосов)
Популярная тема  Горячая тема (есть новые ответы)
Закрыта  Закрытая тема
Нет новых  Горячая тема (нет новых ответов) Перемещена  Тема перемещена
 

RSS Текстовая версия Сейчас: 21.05.24, 1:52
1С Предприятие 8.3, 1С Предприятие 8.2, 1С Предприятие 8.1, 1С Предприятие 8.0, 1С Предприятие 7.7, Литература 1С, Общие вопросы по администрированию 1С, Методическая поддержка 1С - всё в одном месте: на Украинском 1С форуме!