Вывод параметров на макет
Делаю обработку по выгрузке в excel.
Все хорошо,но _ШК не могу получить. Подскажите кто нибудь пожалуйста...
Все хорошо,но _ШК не могу получить. Подскажите кто нибудь пожалуйста...
Процедура ВыгрузитьШаблон(ВхСтрокаКонтрагент)
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ
| ВариантыИсполнения.Владелец КАК Номенклатура,
| ВариантыИсполнения.Ссылка КАК ВИ
|ИЗ
| Справочник.ВариантыИсполнения КАК ВариантыИсполнения
|ГДЕ
| ВариантыИсполнения.ПометкаУдаления = ЛОЖЬ
| И ВариантыИсполнения.Владелец.ПометкаУдаления = ЛОЖЬ
| И ВариантыИсполнения.Владелец В ИЕРАРХИИ(&Номенклатура)
| И ВариантыИсполнения.Активность
| И ВариантыИсполнения.Владелец.Активность
| И ВариантыИсполнения.ТипВИ = ЗНАЧЕНИЕ(Перечисление.ТипыВариантовИсполнения.Стандартный)
|
|СГРУППИРОВАТЬ ПО
| ВариантыИсполнения.Владелец,
| ВариантыИсполнения.Ссылка
|ИТОГИ ПО
| Номенклатура ИЕРАРХИЯ
|АВТОУПОРЯДОЧИВАНИЕ";
Запрос.УстановитьПараметр("Номенклатура", НоменклатураИерархия.ВыгрузитьЗначения());
ВыборкаДетали = Запрос.Выполнить().Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам);
ТабДок = Новый ТабличныйДокумент;
Макет = ПолучитьМакет("Макет");
ОбластьШапка = Макет.ПолучитьОбласть("Шапка");
ОбластьСтрока = Макет.ПолучитьОбласть("Тело");
струк=Новый Структура;
струк.Вставить("Код",ВхСтрокаКонтрагент.Контрагент.Код);
струк.Вставить("Наименование",ВхСтрокаКонтрагент.Контрагент.Наименование);
струк.Вставить("Адрес",ВхСтрокаКонтрагент.Контрагент.Адрес);
ОбластьШапка.Параметры.Заполнить(струк);
ТабДок.Вывести(ОбластьШапка);
ТабДок.НачатьАвтогруппировкуСтрок();
РекурсивныйВыводСтрок(ТабДок,ОбластьСтрока,ВыборкаДетали);
ТабДок.ЗакончитьАвтогруппировкуСтрок();
ТабДок.Показать();
//ТабДок.Записать("C:\Users\User\Desktop\1.xls", ТипФайлаТабличногоДокумента.XLS);
КонецПроцедуры
Процедура РекурсивныйВыводСтрок(ТабДок, ОбластьСтрока, ВыборкаДетали)
Пока ВыборкаДетали.Следующий() Цикл
ЗаполнитьЗначенияСвойств(ОбластьСтрока.Параметры, ВыборкаДетали);
ТабДок.Вывести(ОбластьСтрока, ВыборкаДетали.Уровень());
ВыборкаРезультат = ВыборкаДетали.Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам);
РекурсивныйВыводСтрок(ТабДок, ОбластьСтрока, ВыборкаРезультат);
КонецЦикла;
Если НЕ глПустоеЗначение(ВыборкаДетали.ВИ) Тогда
_Дополнительно = Новый Структура;
_Дополнительно.Вставить("ВариантИсполнения",ВыборкаДетали.ВИ);
_Дополнительно.Вставить("ЕдИзм",ВыборкаДетали.Номенклатура.БазоваяЕдИзм);
_ШК = глСформироватьВнутреннийШтрихкод(ВыборкаДетали.Номенклатура,_Дополнительно);
_Дополнительно.Вставить("_ШК",_ШК);
ОбластьСтрока.Параметры.Заполнить(_Дополнительно);
Пока ВыборкаДетали.Следующий() Цикл
_Дополнительно = Новый Структура;
_Дополнительно.Вставить("ВариантИсполнения",ВыборкаДетали.ВИ);
_Дополнительно.Вставить("ЕдИзм",ВыборкаДетали.Номенклатура.БазоваяЕдИзм);
_ШК = глСформироватьВнутреннийШтрихкод(ВыборкаДетали.Номенклатура,_Дополнительно);
_Дополнительно.Вставить("_ШК",_ШК);
ОбластьСтрока.Параметры.Заполнить(_Дополнительно);
КонецЦикла;
КонецЕсли;
КонецПроцедуры
ПоказатьПо теме из базы знаний
- Получение всех параметров макета + маленькие хитрости
- Программная корректировка при выводе отчета СКД
- Вывод печатных форм по документу "Прием на работу"(или по справочнику "Сотрудник") с возможностью ручного редактирования и добавления новых макетов MS Word
- По-настоящему свои макеты в отчетах СКД. Исследование процесса компоновки и генерация кода отчета
- Модель СКД
Найденные решения
(26) Конечно, мы же строку не выводим, ыхыхы
Процедура РекурсивныйВыводСтрок(ТабДок, ОбластьСтрока, ВыборкаДетали)
Пока ВыборкаДетали.Следующий() Цикл
ЗаполнитьЗначенияСвойств(ОбластьСтрока.Параметры, ВыборкаДетали);
ТабДок.Вывести(ОбластьСтрока, ВыборкаДетали.Уровень());
ВыборкаРезультат = ВыборкаДетали.Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам);
Если ВыборкаДетали.Номенклатура.ЭтоГруппа Тогда
РекурсивныйВыводСтрок(ТабДок, ОбластьСтрока, ВыборкаРезультат);
Иначе
Пока ВыборкаРезультат.Следующий() Цикл
Если НЕ глПустоеЗначение(ВыборкаРезультат.ВИ) Тогда
_Дополнительно = Новый Структура;
_Дополнительно.Вставить("ВариантИсполнения",ВыборкаРезультат.ВИ);
_Дополнительно.Вставить("ЕдИзм",ВыборкаРезультат.Номенклатура.БазоваяЕдИзм);
_ШК = глСформироватьВнутреннийШтрихкод(ВыборкаРезультат.Номенклатура,_Дополнительно);
_Дополнительно.Вставить("_ШК",_ШК);
ОбластьСтрока.Параметры.Заполнить(_Дополнительно);
ТабДок.Вывести(ОбластьСтрока, ВыборкаДетали.Уровень() + 1);
КонецЕсли;
КонецЦикла;
КонецЕсли;
КонецЦикла;
КонецПроцедуры
ПоказатьОстальные ответы
В избранное
Подписаться на ответы
Сортировка:
Древо развёрнутое
Свернуть все
(3) Ну вот смотри. Ты вызываешь вывод рекурсивно, чтобы вывести иерархию номенклатуры и для самого нижнего уровня - штрих-коды, так? В процедуре ты в любом случае проходишь циклом ВСЮ входящую выборку и потом смотришь - есть ли в уже пройденной выборке ВИ. Ясен пень, там будет неопределено.Тебе нужно ветвить процедуру в зависимости от того группой является номенклатура или нет.
(5) так?
только тут ошибка Значение не является значением объектного типа (ЭтоГруппа)
Если ВыборкаДетали.Номенклатура.ЭтоГруппа Тогда
Процедура ВыгрузитьШаблон(ВхСтрокаКонтрагент)
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ
| ВариантыИсполнения.Владелец КАК Номенклатура,
| ВариантыИсполнения.Ссылка КАК ВИ
|ИЗ
| Справочник.ВариантыИсполнения КАК ВариантыИсполнения
|ГДЕ
| ВариантыИсполнения.ПометкаУдаления = ЛОЖЬ
| И ВариантыИсполнения.Владелец.ПометкаУдаления = ЛОЖЬ
| И ВариантыИсполнения.Владелец В ИЕРАРХИИ(&Номенклатура)
| И ВариантыИсполнения.Активность
| И ВариантыИсполнения.Владелец.Активность
| И ВариантыИсполнения.ТипВИ = ЗНАЧЕНИЕ(Перечисление.ТипыВариантовИсполнения.Стандартный)
|
|СГРУППИРОВАТЬ ПО
| ВариантыИсполнения.Владелец,
| ВариантыИсполнения.Ссылка
|ИТОГИ ПО
| Номенклатура ИЕРАРХИЯ
|АВТОУПОРЯДОЧИВАНИЕ";
Запрос.УстановитьПараметр("Номенклатура", НоменклатураИерархия.ВыгрузитьЗначения());
ВыборкаДетали = Запрос.Выполнить().Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам);
ТабДок = Новый ТабличныйДокумент;
Макет = ПолучитьМакет("Макет");
ОбластьШапка = Макет.ПолучитьОбласть("Шапка");
ОбластьСтрока = Макет.ПолучитьОбласть("Тело");
струк=Новый Структура;
струк.Вставить("Код",ВхСтрокаКонтрагент.Контрагент.Код);
струк.Вставить("Наименование",ВхСтрокаКонтрагент.Контрагент.Наименование);
струк.Вставить("Адрес",ВхСтрокаКонтрагент.Контрагент.Адрес);
ОбластьШапка.Параметры.Заполнить(струк);
ТабДок.Вывести(ОбластьШапка);
ТабДок.НачатьАвтогруппировкуСтрок();
РекурсивныйВыводСтрок(ТабДок,ОбластьСтрока,ВыборкаДетали);
ТабДок.ЗакончитьАвтогруппировкуСтрок();
ТабДок.Показать();
//ТабДок.Записать("C:\Users\User\Desktop\1.xls", ТипФайлаТабличногоДокумента.XLS);
КонецПроцедуры
Процедура РекурсивныйВыводСтрок(ТабДок, ОбластьСтрока, ВыборкаДетали)
Если ВыборкаДетали.Номенклатура.ЭтоГруппа Тогда
ВыборкаРезультат = ВыборкаДетали.Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам);
Если ВыборкаРезультат.Следущий() Тогда
ЗаполнитьЗначенияСвойств(ОбластьСтрока.Параметры, ВыборкаДетали);
ТабДок.Вывести(ОбластьСтрока, ВыборкаДетали.Уровень());
// ВыборкаРезультат = ВыборкаДетали.Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам);
РекурсивныйВыводСтрок(ТабДок, ОбластьСтрока, ВыборкаРезультат);
КонецЕсли;
Иначе
Если глПустоеЗначение(ВыборкаДетали.ВИ) Тогда
ЗаполнитьЗначенияСвойств(ОбластьСтрока.Параметры, ВыборкаДетали);
ТабДок.Вывести(ОбластьСтрока, ВыборкаДетали.Уровень());
// ВыборкаРезультат = ВыборкаДетали.Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам);
РекурсивныйВыводСтрок(ТабДок, ОбластьСтрока, ВыборкаРезультат);
Иначе
_Дополнительно = Новый Структура;
_Дополнительно.Вставить("ВариантИсполнения",ВыборкаДетали.ВИ);
_Дополнительно.Вставить("ЕдИзм",ВыборкаДетали.Номенклатура.БазоваяЕдИзм);
_ШК = глСформироватьВнутреннийШтрихкод(ВыборкаДетали.Номенклатура,_Дополнительно);
_Дополнительно.Вставить("_ШК",_ШК);
ОбластьСтрока.Параметры.Заполнить(_Дополнительно);
Пока ВыборкаДетали.Следующий() Цикл
_Дополнительно = Новый Структура;
_Дополнительно.Вставить("ВариантИсполнения",ВыборкаДетали.ВИ);
_Дополнительно.Вставить("ЕдИзм",ВыборкаДетали.Номенклатура.БазоваяЕдИзм);
_ШК = глСформироватьВнутреннийШтрихкод(ВыборкаДетали.Номенклатура,_Дополнительно);
_Дополнительно.Вставить("_ШК",_ШК);
ОбластьСтрока.Параметры.Заполнить(_Дополнительно);
КонецЦикла;
КонецЕсли;
КонецЕсли;
КонецПроцедуры
Показатьтолько тут ошибка Значение не является значением объектного типа (ЭтоГруппа)
Если ВыборкаДетали.Номенклатура.ЭтоГруппа Тогда
(6) неправильно выразился) Ветвить не саму процедуру, а вызывать ее и подавать на вход ВыборкаДетали.Выбрать() если в текущей выборке номенклатура - группа. Если номенклатура - не группа - тогда уже в этой же процедуре продолжать тогда ВыборкаДетали.Выбрать() обрабатывать здесь же и выводить штрихкоды.
Вот так должно взлететь, думаю.
Пока ВыборкаДетали.Следующий() Цикл
ЗаполнитьЗначенияСвойств(ОбластьСтрока.Параметры, ВыборкаДетали);
ТабДок.Вывести(ОбластьСтрока, ВыборкаДетали.Уровень());
ВыборкаРезультат = ВыборкаДетали.Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам);
Если ВыборкаДетали.Номенклатура.ЭтоГруппа Тогда
РекурсивныйВыводСтрок(ТабДок, ОбластьСтрока, ВыборкаРезультат);
Иначе
Пока ВыборкаРезультат.Следующий() Цикл
_Дополнительно = Новый Структура;
_Дополнительно.Вставить("ВариантИсполнения",ВыборкаРезультат.ВИ);
_Дополнительно.Вставить("ЕдИзм",ВыборкаРезультат.Номенклатура.БазоваяЕдИзм);
_ШК = глСформироватьВнутреннийШтрихкод(ВыборкаРезультат.Номенклатура,_Дополнительно);
_Дополнительно.Вставить("_ШК",_ШК);
ОбластьСтрока.Параметры.Заполнить(_Дополнительно);
КонецЦикла;
КонецЕсли;
КонецЦикла;
ПоказатьВот так должно взлететь, думаю.
(13)так?
или туплю
Процедура РекурсивныйВыводСтрок(ТабДок, ОбластьСтрока, ВыборкаДетали)
Пока ВыборкаДетали.Следующий() Цикл
ЗаполнитьЗначенияСвойств(ОбластьСтрока.Параметры, ВыборкаДетали);
ТабДок.Вывести(ОбластьСтрока, ВыборкаДетали.Уровень());
ВыборкаРезультат = ВыборкаДетали.Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам);
Если ВыборкаДетали.Номенклатура.ЭтоГруппа Тогда
РекурсивныйВыводСтрок(ТабДок, ОбластьСтрока, ВыборкаРезультат);
Иначе
Пока ВыборкаРезультат.Следующий() Цикл
_Дополнительно = Новый Структура;
_Дополнительно.Вставить("ВариантИсполнения",ВыборкаДетали.ВИ);
_Дополнительно.Вставить("ЕдИзм",ВыборкаДетали.Номенклатура.БазоваяЕдИзм);
_ШК = глСформироватьВнутреннийШтрихкод(ВыборкаДетали.Номенклатура,_Дополнительно);
_Дополнительно.Вставить("_ШК",_ШК);
ОбластьСтрока.Параметры.Заполнить(_Дополнительно);
КонецЦикла;
КонецЕсли;
Если НЕ глПустоеЗначение(ВыборкаДетали.ВИ) Тогда
_Дополнительно = Новый Структура;
_Дополнительно.Вставить("ВариантИсполнения",ВыборкаДетали.ВИ);
_Дополнительно.Вставить("ЕдИзм",ВыборкаДетали.Номенклатура.БазоваяЕдИзм);
_ШК = глСформироватьВнутреннийШтрихкод(ВыборкаДетали.Номенклатура,_Дополнительно);
_Дополнительно.Вставить("_ШК",_ШК);
ОбластьСтрока.Параметры.Заполнить(_Дополнительно);
иначе
Пока ВыборкаРезультат.Следующий() Цикл
_Дополнительно = Новый Структура;
_Дополнительно.Вставить("ВариантИсполнения",ВыборкаДетали.ВИ);
_Дополнительно.Вставить("ЕдИзм",ВыборкаДетали.Номенклатура.БазоваяЕдИзм);
_ШК = глСформироватьВнутреннийШтрихкод(ВыборкаДетали.Номенклатура,_Дополнительно);
_Дополнительно.Вставить("_ШК",_ШК);
ОбластьСтрока.Параметры.Заполнить(_Дополнительно);
КонецЦикла;
КонецЕсли;
КонецЦикла;
КонецПроцедуры
или туплю
Процедура РекурсивныйВыводСтрок(ТабДок, ОбластьСтрока, ВыборкаДетали)
Пока ВыборкаДетали.Следующий() Цикл
ЗаполнитьЗначенияСвойств(ОбластьСтрока.Параметры, ВыборкаДетали);
ТабДок.Вывести(ОбластьСтрока, ВыборкаДетали.Уровень());
ВыборкаРезультат = ВыборкаДетали.Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам);
Если ВыборкаДетали.Номенклатура.ЭтоГруппа Тогда
РекурсивныйВыводСтрок(ТабДок, ОбластьСтрока, ВыборкаРезультат);
Иначе
Пока ВыборкаРезультат.Следующий() Цикл
_Дополнительно = Новый Структура;
_Дополнительно.Вставить("ВариантИсполнения",ВыборкаДетали.ВИ);
_Дополнительно.Вставить("ЕдИзм",ВыборкаДетали.Номенклатура.БазоваяЕдИзм);
_ШК = глСформироватьВнутреннийШтрихкод(ВыборкаДетали.Номенклатура,_Дополнительно);
_Дополнительно.Вставить("_ШК",_ШК);
ОбластьСтрока.Параметры.Заполнить(_Дополнительно);
КонецЦикла;
КонецЕсли;
Если НЕ глПустоеЗначение(ВыборкаДетали.ВИ) Тогда
_Дополнительно = Новый Структура;
_Дополнительно.Вставить("ВариантИсполнения",ВыборкаДетали.ВИ);
_Дополнительно.Вставить("ЕдИзм",ВыборкаДетали.Номенклатура.БазоваяЕдИзм);
_ШК = глСформироватьВнутреннийШтрихкод(ВыборкаДетали.Номенклатура,_Дополнительно);
_Дополнительно.Вставить("_ШК",_ШК);
ОбластьСтрока.Параметры.Заполнить(_Дополнительно);
иначе
Пока ВыборкаРезультат.Следующий() Цикл
_Дополнительно = Новый Структура;
_Дополнительно.Вставить("ВариантИсполнения",ВыборкаДетали.ВИ);
_Дополнительно.Вставить("ЕдИзм",ВыборкаДетали.Номенклатура.БазоваяЕдИзм);
_ШК = глСформироватьВнутреннийШтрихкод(ВыборкаДетали.Номенклатура,_Дополнительно);
_Дополнительно.Вставить("_ШК",_ШК);
ОбластьСтрока.Параметры.Заполнить(_Дополнительно);
КонецЦикла;
КонецЕсли;
КонецЦикла;
КонецПроцедуры
(14)
Пока ВыборкаДетали.Следующий() Цикл
ЗаполнитьЗначенияСвойств(ОбластьСтрока.Параметры, ВыборкаДетали);
ТабДок.Вывести(ОбластьСтрока, ВыборкаДетали.Уровень());
ВыборкаРезультат = ВыборкаДетали.Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам);
Если ВыборкаДетали.Номенклатура.ЭтоГруппа Тогда
РекурсивныйВыводСтрок(ТабДок, ОбластьСтрока, ВыборкаРезультат);
Иначе
Пока ВыборкаРезультат.Следующий() Цикл
Если НЕ глПустоеЗначение(ВыборкаРезультат.ВИ) Тогда
_Дополнительно = Новый Структура;
_Дополнительно.Вставить("ВариантИсполнения",ВыборкаРезультат.ВИ);
_Дополнительно.Вставить("ЕдИзм",ВыборкаРезультат.Номенклатура.БазоваяЕдИзм);
_ШК = глСформироватьВнутреннийШтрихкод(ВыборкаРезультат.Номенклатура,_Дополнительно);
_Дополнительно.Вставить("_ШК",_ШК);
ОбластьСтрока.Параметры.Заполнить(_Дополнительно);
КонецЕсли;
КонецЦикла;
КонецЕсли;
КонецЦикла;
Показать
(15) ЗаполнитьЗначенияСвойств(ОбластьСтрока.Параметры, ВыборкаДетали);
ТабДок.Вывести(ОбластьСтрока, ВыборкаДетали.Уровень());
ВыборкаРезультат = ВыборкаДетали.Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам);
РекурсивныйВыводСтрок(ТабДок, ОбластьСтрока, ВыборкаРезультат);
Если ВыборкаДетали.Номенклатура.ЭтоГруппа Тогда
Сделала так ВИ вышел,но шк нет
ТабДок.Вывести(ОбластьСтрока, ВыборкаДетали.Уровень());
ВыборкаРезультат = ВыборкаДетали.Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам);
РекурсивныйВыводСтрок(ТабДок, ОбластьСтрока, ВыборкаРезультат);
Если ВыборкаДетали.Номенклатура.ЭтоГруппа Тогда
Сделала так ВИ вышел,но шк нет
(18)вот так сейчас
Процедура РекурсивныйВыводСтрок(ТабДок, ОбластьСтрока, ВыборкаДетали)
Пока ВыборкаДетали.Следующий() Цикл
ЗаполнитьЗначенияСвойств(ОбластьСтрока.Параметры, ВыборкаДетали);
ТабДок.Вывести(ОбластьСтрока, ВыборкаДетали.Уровень());
ВыборкаРезультат = ВыборкаДетали.Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам);
Если ВыборкаДетали.Номенклатура.ЭтоГруппа Тогда
РекурсивныйВыводСтрок(ТабДок, ОбластьСтрока, ВыборкаРезультат);
Иначе
Пока ВыборкаРезультат.Следующий() Цикл
Если НЕ глПустоеЗначение(ВыборкаРезультат.ВИ) Тогда
_Дополнительно = Новый Структура;
_Дополнительно.Вставить("ВИ",ВыборкаРезультат.ВИ);
_Дополнительно.Вставить("ЕдИзм",ВыборкаРезультат.Номенклатура.БазоваяЕдИзм);
_ШК = глСформироватьВнутреннийШтрихкод(ВыборкаРезультат.Номенклатура,_Дополнительно);
_Дополнительно.Вставить("_ШК",_ШК);
ОбластьСтрока.Параметры.Заполнить(_Дополнительно);
КонецЕсли;
КонецЦикла;
КонецЕсли;
КонецЦикла;
КонецПроцедуры
ПоказатьПрикрепленные файлы:
(21)
у меня было вот таки все работало
Процедура ВывестиСтроку(ВхВыборка,Итератор,ВхЛист,колво)
// Если ВхВыборка.Номенклатура.ЭтоГруппа Тогда
// ВхЛист.Cells(Итератор,2).Value = Строка(Итератор);
// ВхЛист.Cells(Итератор,3).Value = Строка(СокрЛП(ВхВыборка.Номенклатура.Код));
// ВхЛист.Cells(Итератор,4).Value = Строка(СокрЛП(ВхВыборка.Номенклатура.Наименование));
// ВхЛист.Cells(Итератор,5).Value = "";
// ВхЛист.Cells(Итератор,6).Value = "";
// ВхЛист.Cells(Итератор,2).Font.Bold = 1;
// ВхЛист.Cells(Итератор,3).Font.Bold = 1;
// ВхЛист.Cells(Итератор,4).Font.Bold = 1;
// ВхЛист.Cells(Итератор,5).Font.Bold = 1;
// ВхЛист.Cells(Итератор,6).Font.Bold = 1;
// Итератор = Итератор + 1;
// ВыборкаНоменклатура = ВхВыборка.Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам);
// Если ВыборкаНоменклатура.Следующий() Тогда
// ВывестиСтроку(ВыборкаНоменклатура,Итератор,ВхЛист,колво);
// КонецЕсли;
//
// Иначе
//
// Если глПустоеЗначение(ВхВыборка.ВИ) Тогда
//
// ВыборкаНоменклатура = ВхВыборка.Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам);
// Если ВыборкаНоменклатура.Следующий() Тогда
// ВывестиСтроку(ВыборкаНоменклатура,Итератор,ВхЛист,колво);
// КонецЕсли;
//
// Иначе
//
// _Дополнительно = Новый Структура;
// _Дополнительно.Вставить("ВариантИсполнения",ВхВыборка.ВИ);
// _Дополнительно.Вставить("ЕдИзм",ВхВыборка.Номенклатура.БазоваяЕдИзм);
// _ШК = глСформироватьВнутреннийШтрихкод(ВхВыборка.Номенклатура,_Дополнительно);
//
// ВхЛист.Cells(Итератор,2).Value = Итератор;
// ВхЛист.Cells(Итератор,3).Value = _ШК;
// ВхЛист.Cells(Итератор,4).Value = Строка(СокрЛП(ВхВыборка.Номенклатура.Наименование));
// ВхЛист.Cells(Итератор,5).Value = Строка(СокрЛП(ВхВыборка.ВИ.Наименование));
// ВхЛист.Cells(Итератор,6).Value = "";
// Итератор = Итератор + 1;
//
// Пока ВхВыборка.Следующий() Цикл
//
// _Дополнительно = Новый Структура;
// _Дополнительно.Вставить("ВариантИсполнения",ВхВыборка.ВИ);
// _Дополнительно.Вставить("ЕдИзм",ВхВыборка.Номенклатура.БазоваяЕдИзм);
// _ШК = глСформироватьВнутреннийШтрихкод(ВхВыборка.Номенклатура,_Дополнительно);
//
// ВхЛист.Cells(Итератор,2).Value = Итератор;
// ВхЛист.Cells(Итератор,3).Value = _ШК;
// ВхЛист.Cells(Итератор,4).Value = Строка(СокрЛП(ВхВыборка.Номенклатура.Наименование));
// ВхЛист.Cells(Итератор,5).Value = Строка(СокрЛП(ВхВыборка.ВИ.Наименование));
// ВхЛист.Cells(Итератор,6).Value = "";
// Итератор = Итератор + 1;
//
// КонецЦикла;
//
// КонецЕсли;
// КонецЕсли;
//
// КонецПроцедуры
Показатьу меня было вот таки все работало
(23)
Функция глСформироватьВнутреннийШтрихкод(ВхВладелец, ВхДополнительно = Неопределено) Экспорт
Если ВхДополнительно = Неопределено Тогда
ВхВариантИсполнения = Неопределено;
ВхЕдИзм = Неопределено;
Если ЕстьДоступ.РСУ_СерийныйУчет() Тогда // РСУ.СерийныйУчет
ВхСерия = Неопределено;
КонецЕсли;
ИначеЕсли ТипЗнч(ВхДополнительно) = Тип("Структура") Тогда
ВхДополнительно.Свойство("ВариантИсполнения", ВхВариантИсполнения);
ВхДополнительно.Свойство("ЕдИзм", ВхЕдИзм);
Если ЕстьДоступ.РСУ_СерийныйУчет() Тогда // РСУ.СерийныйУчет
ВхДополнительно.Свойство("Серия", ВхСерия);
КонецЕсли;
Иначе
ВызватьИсключение("глСформироватьВнутреннийШтрихкод(): Неподдерживаемый тип параметра ВхДополнительно - <" + ТипЗнч(ВхДополнительно) + ">");
КонецЕсли;
Если ТипЗнч(ВхВладелец) = Тип("СправочникСсылка.Номенклатура") Тогда // префикс 20
_НовыйШтрихкод = "20" + Формат(ВхВладелец.Код, "ЧЦ=9; ЧВН=; ЧГ=0");
_НовыйШтрихкод = _НовыйШтрихкод + ?(ВхВариантИсполнения = Неопределено, "000000", Формат(ВхВариантИсполнения.Код, "ЧЦ=6; ЧВН=; ЧГ=0"));
_НовыйШтрихкод = _НовыйШтрихкод + ?(ВхЕдИзм = Неопределено, Формат(ВхВладелец.БазоваяЕдИзм.Код, "ЧЦ=1"), Формат(ВхЕдИзм.Код, "ЧЦ=1"));
ИначеЕсли ТипЗнч(ВхВладелец) = Тип("СправочникСсылка.Пользователи") Тогда // префикс 21
_НовыйШтрихкод = "21" + Формат(ВхВладелец.КодШК, "ЧЦ=3; ЧВН=; ЧГ=0");
ИначеЕсли ТипЗнч(ВхВладелец) = Тип("СправочникСсылка.ТехнологическиеОперации") Тогда // префикс 22
_НовыйШтрихкод = "22" + Формат(ВхВладелец.Код, "ЧЦ=5; ЧВН=; ЧГ=0");
ИначеЕсли ТипЗнч(ВхВладелец) = Тип("СправочникСсылка.СдельныеОперации") Тогда // префикс 23
_НовыйШтрихкод = "23" + Формат(ВхВладелец.Код, "ЧЦ=5; ЧВН=; ЧГ=0");
ИначеЕсли ТипЗнч(ВхВладелец) = Тип("ДокументСсылка.ЗаказНаПроизводство") Тогда // префикс 24
_НовыйШтрихкод = "24" + Формат(КодСимвола(ВхВладелец.Номер, 1), "ЧЦ=4; ЧВН=; ЧГ=0"); // префикс номера документа (префикс фирмы)
_НовыйШтрихкод = _НовыйШтрихкод + Прав(ВхВладелец.Номер, 8);
_НовыйШтрихкод = _НовыйШтрихкод + Формат(ВхВладелец.Дата, "ДФ=yyyy");
Показать
(26) Конечно, мы же строку не выводим, ыхыхы
Процедура РекурсивныйВыводСтрок(ТабДок, ОбластьСтрока, ВыборкаДетали)
Пока ВыборкаДетали.Следующий() Цикл
ЗаполнитьЗначенияСвойств(ОбластьСтрока.Параметры, ВыборкаДетали);
ТабДок.Вывести(ОбластьСтрока, ВыборкаДетали.Уровень());
ВыборкаРезультат = ВыборкаДетали.Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам);
Если ВыборкаДетали.Номенклатура.ЭтоГруппа Тогда
РекурсивныйВыводСтрок(ТабДок, ОбластьСтрока, ВыборкаРезультат);
Иначе
Пока ВыборкаРезультат.Следующий() Цикл
Если НЕ глПустоеЗначение(ВыборкаРезультат.ВИ) Тогда
_Дополнительно = Новый Структура;
_Дополнительно.Вставить("ВариантИсполнения",ВыборкаРезультат.ВИ);
_Дополнительно.Вставить("ЕдИзм",ВыборкаРезультат.Номенклатура.БазоваяЕдИзм);
_ШК = глСформироватьВнутреннийШтрихкод(ВыборкаРезультат.Номенклатура,_Дополнительно);
_Дополнительно.Вставить("_ШК",_ШК);
ОбластьСтрока.Параметры.Заполнить(_Дополнительно);
ТабДок.Вывести(ОбластьСтрока, ВыборкаДетали.Уровень() + 1);
КонецЕсли;
КонецЦикла;
КонецЕсли;
КонецЦикла;
КонецПроцедуры
Показать
(33)можно еще вопрос?
короче я должна сохранить этот документ в папку которую выберет пользователь.Вот я пишу
ТабДок.Записать(КаталогШаблонов+"_ШаблонЗаказа.xls");
каталог шаблонов-это реквизит формы.
что я делаю не так?
Ошибку выдает при открытии документа и сохраняет его просто на рабочий стол
Действительный формат открываемого файла отличается от указываемого его расширением имени файла. Перед открытием данного файла убедитесь что он не поврежден и получен из надежного источника. Открыть этот файл сейчас?
короче я должна сохранить этот документ в папку которую выберет пользователь.Вот я пишу
ТабДок.Записать(КаталогШаблонов+"_ШаблонЗаказа.xls");
каталог шаблонов-это реквизит формы.
что я делаю не так?
Ошибку выдает при открытии документа и сохраняет его просто на рабочий стол
Действительный формат открываемого файла отличается от указываемого его расширением имени файла. Перед открытием данного файла убедитесь что он не поврежден и получен из надежного источника. Открыть этот файл сейчас?
Попробуйте так:
Пока ВыборкаДетали.Следующий() Цикл
ЗаполнитьЗначенияСвойств(ОбластьСтрока.Параметры, ВыборкаДетали);
ТабДок.Вывести(ОбластьСтрока, ВыборкаДетали.Уровень());
ВыборкаРезультат = ВыборкаДетали.Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам);
РекурсивныйВыводСтрок(ТабДок, ОбластьСтрока, ВыборкаРезультат);
Если НЕ глПустоеЗначение(ВыборкаДетали.ВИ) Тогда
_Дополнительно = Новый Структура;
_Дополнительно.Вставить("ВариантИсполнения",ВыборкаДетали.ВИ);
_Дополнительно.Вставить("ЕдИзм",ВыборкаДетали.Номенклатура.БазоваяЕдИзм);
_ШК = глСформироватьВнутреннийШтрихкод(ВыборкаДетали.Номенклатура,_Дополнительно);
_Дополнительно.Вставить("_ШК",_ШК);
ОбластьСтрока.Параметры.Заполнить(_Дополнительно);
КонецЕсли;
КонецЦикла;
Пока ВыборкаДетали.Следующий() Цикл
ЗаполнитьЗначенияСвойств(ОбластьСтрока.Параметры, ВыборкаДетали);
ТабДок.Вывести(ОбластьСтрока, ВыборкаДетали.Уровень());
ВыборкаРезультат = ВыборкаДетали.Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам);
РекурсивныйВыводСтрок(ТабДок, ОбластьСтрока, ВыборкаРезультат);
Если НЕ глПустоеЗначение(ВыборкаДетали.ВИ) Тогда
_Дополнительно = Новый Структура;
_Дополнительно.Вставить("ВариантИсполнения",ВыборкаДетали.ВИ);
_Дополнительно.Вставить("ЕдИзм",ВыборкаДетали.Номенклатура.БазоваяЕдИзм);
_ШК = глСформироватьВнутреннийШтрихкод(ВыборкаДетали.Номенклатура,_Дополнительно);
_Дополнительно.Вставить("_ШК",_ШК);
ОбластьСтрока.Параметры.Заполнить(_Дополнительно);
КонецЕсли;
КонецЦикла;
Вакансии
Аналитик 1С / Бизнес-аналитик
Нижний Новгород
зарплата от 100 000 руб. до 250 000 руб.
Временный (на проект)
Нижний Новгород
зарплата от 100 000 руб. до 250 000 руб.
Временный (на проект)