Архив метки: розница

Массовая печать «Счетов на оплату» и «Акт выполненных работ» в Розница 2.2

Задача: в некой таблице перечислены документы, для которых нужно программно вывести печатные формы счетов и актов.

Решение:

&НаСервере
Функция ПолучитьПечатнуюФормуСчета()
	// вхДок это просто ссылка на документ счет на оплату покупателю
	ттт=новый ТабличныйДокумент();
	для каждого стр из объект.Контрагенты цикл
		счДок=стр.Счет;	
		сообщить(счДок);
		ОбъектыПечати = Новый СписокЗначений;
		ОбъектыПечати.Добавить(счДок.ПолучитьОбъект());
		МассивОбъектов = Новый Массив();
		МассивОбъектов.Добавить(счДок); 
		ПараметрыПечати = Новый Структура;
		ТаблицаСведенийСчетНаОплату=Документы.СчетНаОплатуПокупателю.ПолучитьТаблицуСведенийСчетаНаОплату(МассивОбъектов);
		ПараметрыПечати.Вставить("ВидДокументаПечати",  "СчетНаОплатуПокупателю");
		ПараметрыПечати.Вставить("ИмяПараметровПечати", "ПАРАМЕТРЫ_ПЕЧАТИ_СчетНаОплатуПокупателю_Счет");
		ПараметрыПечати.Вставить("ИмяМакетаПечати",     "ОбщийМакет.ПФ_MXL_СчетЗаказ");
		ТаблицаСведенийСчетНаОплату.Колонки.Добавить("Ссылка");
		ТаблицаСведенийСчетНаОплату[0].Ссылка = счДок;       
		ТаблицаСведенийСчетНаОплату[0].Документ = счДок;
		ТабДок = ПечатьТорговыхДокументов.ПечатьСчетаНаОплату(ТаблицаСведенийСчетНаОплату, ОбъектыПечати, ПараметрыПечати);
		ТабДок.ВывестиГоризонтальныйРазделительСтраниц();
	    ттт.Вывести(ТабДок);		
	конеццикла;				
	возврат ттт;
КонецФункции

&НаКлиенте
Процедура ПечатьСчетов(Команда)
	табдок=ПолучитьПечатнуюФормуСчета();
	табдок.показать();
КонецПроцедуры

&НаСервере
Функция ПолучитьСтатусСчета(счет)
	Запрос = Новый Запрос;
 		Запрос.Текст = 		
		"ВЫБРАТЬ
		|	СтатусыДокументов.Статус.Ссылка КАК СтатусСсылка
		|ИЗ
		|	РегистрСведений.СтатусыДокументов КАК СтатусыДокументов
		|ГДЕ
		|	СтатусыДокументов.Организация = &Организация
		|	И СтатусыДокументов.Документ = &Документ";
	
	    Запрос.УстановитьПараметр("Организация", объект.Организация);
		Запрос.УстановитьПараметр("Документ",счет);
		ВыборкаДетальныеЗаписи = Запрос.Выполнить().Выбрать();
		статус=перечисления.СтатусОплатыСчета.НеОплачен;
		Пока ВыборкаДетальныеЗаписи.Следующий() Цикл
			статус=ВыборкаДетальныеЗаписи.СтатусСсылка;
	    конеццикла;	
	возврат статус;
КонецФункции	
&НаСервере
Функция ПечатьАктовНаСервере()
	// вхДок это просто ссылка на документ счет на оплату покупателю
	ттт=новый ТабличныйДокумент();
	для каждого стр из объект.Контрагенты цикл
		счДок=стр.Акт;	
		сообщить(счДок);
		ОбъектыПечати = Новый СписокЗначений;
		ОбъектыПечати.Добавить(счДок.ПолучитьОбъект());
		МассивОбъектов = Новый Массив();
		МассивОбъектов.Добавить(счДок); 
		ПараметрыПечати = Новый Структура;
		ТаблицаСведенийАкт=Документы.РеализацияТоваровУслуг.ПолучитьТаблицуСведенийАктаОбОказанииУслуг(МассивОбъектов);
		ПараметрыПечати.Вставить("ВидДокументаПечати",  "РеализацияТоваровУслуг");
		ПараметрыПечати.Вставить("ИмяПараметровПечати", "ПАРАМЕТРЫ_ПЕЧАТИ_РеализацияТоваровУслуг_Акт");
		ПараметрыПечати.Вставить("ИмяМакетаПечати",     "Документ.РеализацияТоваровУслуг.ПФ_MXL_Акт");
		ТаблицаСведенийАкт.Колонки.Добавить("Ссылка");
		ТаблицаСведенийАкт[0].Ссылка = счДок;       
		ТаблицаСведенийАкт[0].Документ = счДок;
		ТабДок = ПечатьТорговыхДокументов.ПечатьАктаОбОказанииУслуг(ТаблицаСведенийАкт, ОбъектыПечати, ПараметрыПечати);
		ТабДок.ВывестиГоризонтальныйРазделительСтраниц();
	    ттт.Вывести(ТабДок);		
	конеццикла;				
	возврат ттт;
КонецФункции

&НаКлиенте
Процедура ПечатьАктов(Команда)
	табдок=ПечатьАктовНаСервере();
	табдок.показать();
КонецПроцедуры

Розница 2.2 программное получение основного расчетного счета

	УчетДенежныхСредствБП.УстановитьБанковскийСчет(
		нсчет.СтруктурнаяЕдиница, Объект.Организация, справочники.Валюты.НайтиПоНаименованию("руб"), Истина);

1C Розница: Поле объекта не обнаружено (SKU)

После обновления до 2.2.11.16, стала выводится данная ошибка при печати ценников.

Решение: надо включить галочку «Обмен с офлайн оборудованием» в разделе «Администрирование» — «Подключаемое оборудование» 

Количество дней от первого поступления товара. 1С Розница 2.2

Например можно так:

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

Костылище при работе с ККМ в Розница 2.2.

С какого-то момента на одном из компьютеров с 1С, перестали печататься чеки на онлайн-кассе. Причем ошибок 1С никаких не показывала.  Причем при открытии/закрытии смен, чеки с Z отчетами выдавались.  Бился два дня с разнообразными настройками и поисками решения. Грешил и на ОС, и на 1С и на ККМ. Сегодня утром уже даже отладчиком 1С стал код шерстить, чтобы понять на каком моменте, что-то не так. Нашел:

&НаКлиенте
Процедура НапечататьЧекКлиент()
	Перем Отказ, ИдентификаторУстройства, ИспользоватьКассуБезПодключенияОборудования, РаспределениеВыручкиПоСекциям;
	
	ПодготовитьИПроверитьПечатьЧека(Отказ, ИдентификаторУстройства, ИспользоватьКассуБезПодключенияОборудования, РаспределениеВыручкиПоСекциям);
	
	Если Отказ Тогда
		Возврат
	КонецЕсли;
!!!!!!!! ошибка здесь!!!!!
	Если НЕ ИспользоватьПодключаемоеОборудование ИЛИ ИспользоватьКассуБезПодключенияОборудования Тогда
		
		Если НомерДокументаКассыККМ[Объект.КассаККМ] <> Неопределено Тогда
			Объект.НомерЧекаККМ  = НомерДокументаКассыККМ[Объект.КассаККМ];
		Иначе
			Объект.НомерЧекаККМ  = ПорядковыйНомерПродажи;
		КонецЕсли;
		Объект.ПробитЧек     = Истина;
		
		Модифицированность = Истина;

ИспользоватьПодключаемоеОборудование = ВСЕГДА = ЛОЖЬ.  Причем только когда работаешь в 1С именно на этом ПК. На других всё ок. Почему? Не понятно. Галочка стоит:

Место, где заполняется значение нашел:

// Проверяет, что включена ф.о "Использовать подключаемое оборудование" и авторизовался пользователь,
// а не внешний пользователь.
Функция ИспользоватьПодключаемоеОборудование() Экспорт
	
	Возврат ПолучитьФункциональнуюОпцию("ИспользоватьПодключаемоеОборудование") И ТипЗнч(Пользователи.АвторизованныйПользователь()) = Тип("СправочникСсылка.Пользователи");
	
КонецФункции

И оно возвращает ИСТИНА! В общем, бился, бился..

Пока прибил всё это костылем:

&НаКлиенте
Процедура НапечататьЧекКлиент()
	Перем Отказ, ИдентификаторУстройства, ИспользоватьКассуБезПодключенияОборудования, РаспределениеВыручкиПоСекциям;
	
	ПодготовитьИПроверитьПечатьЧека(Отказ, ИдентификаторУстройства, ИспользоватьКассуБезПодключенияОборудования, РаспределениеВыручкиПоСекциям);
	
	Если Отказ Тогда
		Возврат
	КонецЕсли;
	// грибов
	// совершенно не понятный глюк
	ИспользоватьПодключаемоеОборудование=истина;
	//
	Если НЕ ИспользоватьПодключаемоеОборудование ИЛИ ИспользоватьКассуБезПодключенияОборудования Тогда