Помогите доделать внешнею обработку"Печать ценников по док или складам"
Работает все кроме Процедура ПечПоСкл(), можно ли вообще так формировать ее??
Перем ПечЕдиница, ПечНаименование,ПечРозн,ПечКод;
Перем ЦенаТовара;
Перем ТипРозничной;
перем ТаблЗнач;
перем документ;
перем тов;
перем ТипЦены;
перем КолТов;
перем ТабЗнач, ххх;
Перем Таб;
Перем ЧислоСтрок;
Перем Столбик;
Перем Ряд;
Процедура ДобавитьЦенник()
Столбик = ?(Столбик = 0, 1, ?(Столбик = 1, 2, ?(Столбик = 2, 3, ?(Столбик= 3,4,0))));
Ряд=?(Столбик=0,Ряд+1,Ряд);
Если Ряд=8 Тогда
Таб.НоваяСтраница();
Ряд=1;
КонецЕсли;
Если Ряд>ЧислоСтрок Тогда
Если Столбик=0 Тогда
Таб.ВывестиСекцию("Товар|Ценник");
иначе
Таб.ПрисоединитьСекцию("Товар|Ценник");
КонецЕсли;
глОживить(1);
КонецЕсли;
КонецПроцедуры
процедура ПечПоДок()
Таб=СоздатьОбъект("Таблица");
Таб.ИсходнаяТаблица("МойЦенник");
ЧислоСтрок=0;
Столбик=3;
Ряд=0;
ТипРозничной = Константа.РозничнаяКатегорияЦен;
Если ВыбДок.Вид()="ПриходнаяНакладная" Тогда
док=СоздатьОбъект("Документ.ПриходнаяНакладная");
КонецЕсли;
Если ВыбДок.вид()="Перемещение" Тогда
док=СоздатьОбъект("Документ.Перемещение");
КонецЕсли;
Если ВыбДок.вид()="ОприходованиеИзлишков" Тогда
док=СоздатьОбъект("Документ.ОприходованиеИзлишков");
КонецЕсли;
Док.НайтиДокумент(ВыбДок);
док.ВыбратьСтроки();
Пока док.ПолучитьСтроку()=1 Цикл
ПечНаименование=док.ПолучитьАтрибут("Товар");
ЦенаТовара = глВернутьЦену(док.Товар,ТипРозничной);
ПечРозн=ЦенаТовара.Цена.Получить(РабочаяДата());
ПечКод=Док.Товар.Код;
Кол=док.ПолучитьАтрибут("Количество");
для ххх=1 по Кол Цикл
ДобавитьЦенник();
КонецЦикла;
конецЦикла;
//Вызов выходного отчета в окно просмотра и редактирования.
Таб.Опции(0,0,0,0,ПарСтрСпр);
Таб.Показать("МойЦенник");
КонецПроцедуры
Процедура ПечПоСкл()
Таб=СоздатьОбъект("Таблица");
Таб.ИсходнаяТаблица("МойЦенник");
ЧислоСтрок=0;
Столбик=3;
Ряд=0;
ТипРозничной = Константа.РозничнаяКатегорияЦен;
Спр=СоздатьОбъект("Справочник.Номенклатура");
Спр.ВыбратьЭлементы();
Пока Спр.ПолучитьЭлемент()>0 Цикл
тов=Спр.ТекущийЭлемент();
Если тов.ЭтоГруппа() =1 Тогда
Продолжить;
КонецЕсли;
Кол=Регистр.ОстаткиТоваров.СводныйОстатки(глПустаяФирма,тов,ВыбСкл,"ОстатокТовара");
Если кол=0 Тогда
Продолжить;
КонецЕсли;
Сообщить(Кол);
ПечНаименование=спр.Наименование;
ЦенаТовара = глВернутьЦену(Спр.Наименование,ТипРозничной);
ПечРозн=ЦенаТовара.Цена.Получить(РабочаяДата());
ПечКод=спр.Код;
для ххх=1 по Кол Цикл
ДобавитьЦенник();
КонецЦикла;
КонецЦикла;
//Вызов выходного отчета в окно просмотра и редактирования.
Таб.Опции(0,0,0,0,ПарСтрСпр);
Таб.Показать("МойЦенник");
КонецПроцедуры
// принажатии кнопки печать
Процедура старт()
Если ИзДок=1 Тогда
ПечПоДок();
Иначе
ПечПоСкл();
КонецЕсли;
КонецПроцедуры
Процедура приоткрытии ()
Форма.ИспользоватьСлой("Основной", 2);
Конецпроцедуры
// идет выбр видимых слоев для ввода данных
процедура ПриВыбореПерек()
если ИзДок = 1 тогда
Форма.ИспользоватьСлой("Основной, док",2);
иначе
Форма.ИспользоватьСлой("Основной, Скл", 2);
конецЕсли
конецПроцедуры
Перем ПечЕдиница, ПечНаименование,ПечРозн,ПечКод;
Перем ЦенаТовара;
Перем ТипРозничной;
перем ТаблЗнач;
перем документ;
перем тов;
перем ТипЦены;
перем КолТов;
перем ТабЗнач, ххх;
Перем Таб;
Перем ЧислоСтрок;
Перем Столбик;
Перем Ряд;
Процедура ДобавитьЦенник()
Столбик = ?(Столбик = 0, 1, ?(Столбик = 1, 2, ?(Столбик = 2, 3, ?(Столбик= 3,4,0))));
Ряд=?(Столбик=0,Ряд+1,Ряд);
Если Ряд=8 Тогда
Таб.НоваяСтраница();
Ряд=1;
КонецЕсли;
Если Ряд>ЧислоСтрок Тогда
Если Столбик=0 Тогда
Таб.ВывестиСекцию("Товар|Ценник");
иначе
Таб.ПрисоединитьСекцию("Товар|Ценник");
КонецЕсли;
глОживить(1);
КонецЕсли;
КонецПроцедуры
процедура ПечПоДок()
Таб=СоздатьОбъект("Таблица");
Таб.ИсходнаяТаблица("МойЦенник");
ЧислоСтрок=0;
Столбик=3;
Ряд=0;
ТипРозничной = Константа.РозничнаяКатегорияЦен;
Если ВыбДок.Вид()="ПриходнаяНакладная" Тогда
док=СоздатьОбъект("Документ.ПриходнаяНакладная");
КонецЕсли;
Если ВыбДок.вид()="Перемещение" Тогда
док=СоздатьОбъект("Документ.Перемещение");
КонецЕсли;
Если ВыбДок.вид()="ОприходованиеИзлишков" Тогда
док=СоздатьОбъект("Документ.ОприходованиеИзлишков");
КонецЕсли;
Док.НайтиДокумент(ВыбДок);
док.ВыбратьСтроки();
Пока док.ПолучитьСтроку()=1 Цикл
ПечНаименование=док.ПолучитьАтрибут("Товар");
ЦенаТовара = глВернутьЦену(док.Товар,ТипРозничной);
ПечРозн=ЦенаТовара.Цена.Получить(РабочаяДата());
ПечКод=Док.Товар.Код;
Кол=док.ПолучитьАтрибут("Количество");
для ххх=1 по Кол Цикл
ДобавитьЦенник();
КонецЦикла;
конецЦикла;
//Вызов выходного отчета в окно просмотра и редактирования.
Таб.Опции(0,0,0,0,ПарСтрСпр);
Таб.Показать("МойЦенник");
КонецПроцедуры
Процедура ПечПоСкл()
Таб=СоздатьОбъект("Таблица");
Таб.ИсходнаяТаблица("МойЦенник");
ЧислоСтрок=0;
Столбик=3;
Ряд=0;
ТипРозничной = Константа.РозничнаяКатегорияЦен;
Спр=СоздатьОбъект("Справочник.Номенклатура");
Спр.ВыбратьЭлементы();
Пока Спр.ПолучитьЭлемент()>0 Цикл
тов=Спр.ТекущийЭлемент();
Если тов.ЭтоГруппа() =1 Тогда
Продолжить;
КонецЕсли;
Кол=Регистр.ОстаткиТоваров.СводныйОстатки(глПустаяФирма,тов,ВыбСкл,"ОстатокТовара");
Если кол=0 Тогда
Продолжить;
КонецЕсли;
Сообщить(Кол);
ПечНаименование=спр.Наименование;
ЦенаТовара = глВернутьЦену(Спр.Наименование,ТипРозничной);
ПечРозн=ЦенаТовара.Цена.Получить(РабочаяДата());
ПечКод=спр.Код;
для ххх=1 по Кол Цикл
ДобавитьЦенник();
КонецЦикла;
КонецЦикла;
//Вызов выходного отчета в окно просмотра и редактирования.
Таб.Опции(0,0,0,0,ПарСтрСпр);
Таб.Показать("МойЦенник");
КонецПроцедуры
// принажатии кнопки печать
Процедура старт()
Если ИзДок=1 Тогда
ПечПоДок();
Иначе
ПечПоСкл();
КонецЕсли;
КонецПроцедуры
Процедура приоткрытии ()
Форма.ИспользоватьСлой("Основной", 2);
Конецпроцедуры
// идет выбр видимых слоев для ввода данных
процедура ПриВыбореПерек()
если ИзДок = 1 тогда
Форма.ИспользоватьСлой("Основной, док",2);
иначе
Форма.ИспользоватьСлой("Основной, Скл", 2);
конецЕсли
конецПроцедуры
Ответы
Подписаться на ответы
Инфостарт бот
Сортировка:
Древо развёрнутое
Свернуть все
Chel пишет:
так все и стояло изначально, все равно ошибка
так все и стояло изначально, все равно ошибка
Я спросил не о том, как оно стояло. Я спросил о том, как оно сейчас.
Потому что изначально стояло так:
Chel пишет:
ЦенаТовара = глВернутьЦену(Спр.Наименование,ТипРозничной);
ЦенаТовара = глВернутьЦену(Спр.Наименование,ТипРозничной);
см (1)
Полный текст в студию :-)
Перем ПечЕдиница, ПечНаименование,ПечРозн,ПечКод;
Перем ЦенаТовара;
Перем ТипРозничной;
перем ТаблЗнач;
перем документ;
перем тов;
перем ТипЦены;
перем КолТов;
перем ТабЗнач, ххх;
Перем Таб;
Перем ЧислоСтрок;
Перем Столбик;
Перем Ряд;
Процедура ДобавитьЦенник()
Столбик = ?(Столбик = 0, 1, ?(Столбик = 1, 2, ?(Столбик = 2, 3, ?(Столбик= 3,4,0))));
Ряд=?(Столбик=0,Ряд+1,Ряд);
Если Ряд=8 Тогда
Таб.НоваяСтраница();
Ряд=1;
КонецЕсли;
Если Ряд>ЧислоСтрок Тогда
Если Столбик=0 Тогда
Таб.ВывестиСекцию("Товар|Ценник");
иначе
Таб.ПрисоединитьСекцию("Товар|Ценник");
КонецЕсли;
глОживить(1);
КонецЕсли;
КонецПроцедуры
процедура ПечПоДок()
Таб=СоздатьОбъект("Таблица");
Таб.ИсходнаяТаблица("МойЦенник");
ЧислоСтрок=0;
Столбик=3;
Ряд=0;
ТипРозничной = Константа.РозничнаяКатегорияЦен;
Если ВыбДок.Вид()="ПриходнаяНакладная" Тогда
док=СоздатьОбъект("Документ.ПриходнаяНакладная");
КонецЕсли;
Если ВыбДок.вид()="Перемещение" Тогда
док=СоздатьОбъект("Документ.Перемещение");
КонецЕсли;
Если ВыбДок.вид()="ОприходованиеИзлишков" Тогда
док=СоздатьОбъект("Документ.ОприходованиеИзлишков");
КонецЕсли;
Док.НайтиДокумент(ВыбДок);
док.ВыбратьСтроки();
Пока док.ПолучитьСтроку()=1 Цикл
ПечНаименование=док.ПолучитьАтрибут("Товар");
ЦенаТовара = глВернутьЦену(док.Товар,ТипРозничной);
ПечРозн=ЦенаТовара.Цена.Получить(РабочаяДата());
ПечКод=Док.Товар.Код;
Кол=док.ПолучитьАтрибут("Количество");
для ххх=1 по Кол Цикл
ДобавитьЦенник();
КонецЦикла;
конецЦикла;
//Вызов выходного отчета в окно просмотра и редактирования.
Таб.Опции(0,0,0,0,ПарСтрСпр);
Таб.Показать("МойЦенник");
КонецПроцедуры
Процедура ПечПоСкл()
Таб=СоздатьОбъект("Таблица");
Таб.ИсходнаяТаблица("МойЦенник");
ЧислоСтрок=0;
Столбик=3;
Ряд=0;
ТипРозничной = Константа.РозничнаяКатегорияЦен;
Спр=СоздатьОбъект("Справочник.Номенклатура");
Спр.ВыбратьЭлементы();
Пока Спр.ПолучитьЭлемент()>0 Цикл
тов=Спр.ТекущийЭлемент();
Если тов.ЭтоГруппа() =1 Тогда
Продолжить;
КонецЕсли;
Кол=Регистр.ОстаткиТоваров.СводныйОстаток(,тов,ВыбСкл,"ОстатокТовара");
Если кол=0 Тогда
Продолжить;
КонецЕсли;
ПечНаименование=спр.Наименование;
ЦенаТовара = глВернутьЦену(спр,ТипРозничной);
ПечРозн=ЦенаТовара.Цена.Получить(РабочаяДата());
ПечКод=спр.Код;
для ххх=1 по Кол Цикл
ДобавитьЦенник();
КонецЦикла;
КонецЦикла;
//Вызов выходного отчета в окно просмотра и редактирования.
Таб.Опции(0,0,0,0,ПарСтрСпр);
Таб.Показать("МойЦенник");
КонецПроцедуры
// принажатии кнопки печать
Процедура старт()
Если ИзДок=1 Тогда
ПечПоДок();
Иначе
ПечПоСкл();
КонецЕсли;
КонецПроцедуры
Процедура приоткрытии ()
Форма.ИспользоватьСлой("Основной", 2);
Конецпроцедуры
// идет выбр видимых слоев для ввода данных
процедура ПриВыбореПерек()
если ИзДок = 1 тогда
Форма.ИспользоватьСлой("Основной, док",2);
иначе
Форма.ИспользоватьСлой("Основной, Скл", 2);
конецЕсли
конецПроцедуры
Показать
А если
изменить на
Кол=Регистр.ОстаткиТоваров.СводныйОстатки(глПустаяФирма,тов,ВыбСкл,"ОстатокТовара");
изменить на
Кол=Регистр.ОстаткиТоваров.СводныйОстатки(,тов,ВыбСкл,"ОстатокТовара");
да нет...
лучше
Кол=Регистр.ОстаткиТоваров.СводныЕОстатки(глПустаяФирма,тов,ВыбСкл,"ОстатокТовара");
лучше
Кол=Регистр.ОстаткиТоваров.СводныЕОстатки(глПустаяФирма,тов,ВыбСкл,"ОстатокТовара");
для Tatitu, пишет вот такую гадость
Кол=Регистр.ОстаткиТоваров.СводныЕОстатки(глПустаяФирма,тов,ВыбСкл,"ОстатокТовара");;
{E:\ПРОГРАММИРОВАНИЕ 1С\ПЕЧАТЬ ЦЕННИКОВ МОЯ.ERT(106)}: Слишком много параметров передано при вызове функции/процедуры объекта
Кол=Регистр.ОстаткиТоваров.СводныЕОстатки(глПустаяФирма,тов,ВыбСкл,"ОстатокТовара");;
{E:\ПРОГРАММИРОВАНИЕ 1С\ПЕЧАТЬ ЦЕННИКОВ МОЯ.ERT(106)}: Слишком много параметров передано при вызове функции/процедуры объекта
Альтаир Павленко пишет:
(4) Структуру регистра опишите (Измерения, Ресурсы)
(5) Это описка. Подразумевалось - СводныйОстаток
И, вообще, можно и ЖКК почитать, и в СП заглянуть :-)
[/IS-QUOTE]
Пасибо, та была просто опечатка...
Подскажите Еще:
ЦенаТовара = глВернутьЦену(Спр,ТипРозничной);
ПечРозн=ЦенаТовара.Цена.Получить(РабочаяДата());
ПечРозн=ЦенаТовара.Цена.Получить(РабочаяДата());
{E:\ПРОГРАММИРОВАНИЕ 1С\ПЕЧАТЬ ЦЕННИКОВ МОЯ.ERT(119)}: Значение не представляет агрегатный объект (Цена)
Что здесь не так??
(4) Структуру регистра опишите (Измерения, Ресурсы)
(5) Это описка. Подразумевалось - СводныйОстаток
И, вообще, можно и ЖКК почитать, и в СП заглянуть :-)
[/IS-QUOTE]
Пасибо, та была просто опечатка...
Подскажите Еще:
ЦенаТовара = глВернутьЦену(Спр,ТипРозничной);
ПечРозн=ЦенаТовара.Цена.Получить(РабочаяДата());
ПечРозн=ЦенаТовара.Цена.Получить(РабочаяДата());
{E:\ПРОГРАММИРОВАНИЕ 1С\ПЕЧАТЬ ЦЕННИКОВ МОЯ.ERT(119)}: Значение не представляет агрегатный объект (Цена)
Что здесь не так??
Для Jurii, пишет такую гадось:
Кол=Регистр.ОстаткиТоваров.СводныйОстатки(,тов,ВыбСкл,"ОстатокТовара");
{E:\ПРОГРАММИРОВАНИЕ 1С\ПЕЧАТЬ ЦЕННИКОВ МОЯ.ERT(106)}: Поле агрегатного объекта не обнаружено (СводныйОстатки)
Кол=Регистр.ОстаткиТоваров.СводныйОстатки(,тов,ВыбСкл,"ОстатокТовара");
{E:\ПРОГРАММИРОВАНИЕ 1С\ПЕЧАТЬ ЦЕННИКОВ МОЯ.ERT(106)}: Поле агрегатного объекта не обнаружено (СводныйОстатки)
(0) ты с первый вопросом разобрался ?
СводныйОстаток
и
СводныеОстатки
две разные вещи
у тебя была опечатка , я тебе ее указал ( с ресурсами и измерения - извините телепаты на отдыхе, сегодня воскресенье)
чему равен ЦенаТовара ?
скорее всего ЦенаТовара - пустое значение возвращает или реквизит Цена не является периодическим ?
СводныйОстаток
и
СводныеОстатки
две разные вещи
у тебя была опечатка , я тебе ее указал ( с ресурсами и измерения - извините телепаты на отдыхе, сегодня воскресенье)
чему равен ЦенаТовара ?
скорее всего ЦенаТовара - пустое значение возвращает или реквизит Цена не является периодическим ?
С первым вопросом разобрался, всем Большое пасибо.
а второй
ТипРозничной = Константа.РозничнаяКатегорияЦен;
ЦенаТовара = глВернутьЦену(Спр,ТипРозничной);
ПечРозн=ЦенаТовара.Цена.Получить(РабочаяДата());
Вылетает ошибка
ПечРозн=ЦенаТовара.Цена.Получить(РабочаяДата());
{E:\ПРОГРАММИРОВАНИЕ 1С\ПЕЧАТЬ ЦЕННИКОВ МОЯ.ERT(119)}: Значение не представляет агрегатный объект (Цена)
а второй
ТипРозничной = Константа.РозничнаяКатегорияЦен;
ЦенаТовара = глВернутьЦену(Спр,ТипРозничной);
ПечРозн=ЦенаТовара.Цена.Получить(РабочаяДата());
Вылетает ошибка
ПечРозн=ЦенаТовара.Цена.Получить(РабочаяДата());
{E:\ПРОГРАММИРОВАНИЕ 1С\ПЕЧАТЬ ЦЕННИКОВ МОЯ.ERT(119)}: Значение не представляет агрегатный объект (Цена)
(9)
Пиши так:
или так:
Пиши так:
ТипРозничной = Константа.РозничнаяКатегорияЦен;
ПечРозн=0;
глВернутьЦену(Спр,ТипРозничной,РабочаяДата(),ПечРозн);
или так:
ТипРозничной = Константа.РозничнаяКатегорияЦен;
ЦенаТовара = 0;
глВернутьЦену(Спр,ТипРозничной,,,,,,ЦенаТовара);
ПечРозн=ЦенаТовара.Цена.Получить(РабочаяДата());
Внесу ясность. Я новичек в этом, это моя первая обработка.
эту процедуру где-то с юзал, при печати из документов она работает, при печати из складов, нет.((Текст программы представлен с верху))
Поэтому задавайте вопросы как чайнику.
эту процедуру где-то с юзал, при печати из документов она работает, при печати из складов, нет.((Текст программы представлен с верху))
Поэтому задавайте вопросы как чайнику.
(16) пример
процедура глТест(а,в) // имеет два параметра
а ты ее из модуля вызываешь как глТест(100,Выбзнач,Склад)
вот она и ругается Слишком много фактических параметров
я тебе поэтому и посоветовал найди где прописана
процедура глВернутьЦену() //судя по префикс гл она находится в глобальнике (но я могу и ошибаться)
процедура глТест(а,в) // имеет два параметра
а ты ее из модуля вызываешь как глТест(100,Выбзнач,Склад)
вот она и ругается Слишком много фактических параметров
я тебе поэтому и посоветовал найди где прописана
процедура глВернутьЦену() //судя по префикс гл она находится в глобальнике (но я могу и ошибаться)
Там все перековырял, не выходит
ПОДСКАЖИТЕ КАК МОЖНО ПО ДРУГОМУ, ПОЛУЧИТЬ РОЗНИЧНУЮ ЦЕНУ ТОВАРА?!?!?!?!
ПОДСКАЖИТЕ КАК МОЖНО ПО ДРУГОМУ, ПОЛУЧИТЬ РОЗНИЧНУЮ ЦЕНУ ТОВАРА?!?!?!?!
да, вылетает на "Авансовом платеже"
я чуть-чуть переделал
Алюминий............................
Алюминий, 900
Медь............................
Медь, 450
Ботики (без НДС)............................
Ботики (без НДС), 18
Ложка............................
Ложка, 4.5
Чашка............................
Чашка, 4.5
Авансовый платеж............................
ПечРозн=ЦенаТовара.Цена.Получить(РабочаяДата());
{C:\DOCUMENTS AND SETTINGS\ADMIN\МОИ ДОКУМЕНТЫ\INFOSTART\ЦЕННИК.ERT(18)}: Значение не представляет агрегатный объект (Цена)
я чуть-чуть переделал
ПечНаименование=спр.Наименование;
ЦенаТовара = глВернутьЦену(спр,ТипРозничной);
Сообщить(ПечНаименование+"............................ ");
ПечРозн=ЦенаТовара.Цена.Получить(РабочаяДата());
Сообщить(ПечНаименование+", "+ПечРозн);
Алюминий............................
Алюминий, 900
Медь............................
Медь, 450
Ботики (без НДС)............................
Ботики (без НДС), 18
Ложка............................
Ложка, 4.5
Чашка............................
Чашка, 4.5
Авансовый платеж............................
ПечРозн=ЦенаТовара.Цена.Получить(РабочаяДата());
{C:\DOCUMENTS AND SETTINGS\ADMIN\МОИ ДОКУМЕНТЫ\INFOSTART\ЦЕННИК.ERT(18)}: Значение не представляет агрегатный объект (Цена)
(20) у меня 7.70.014, но в этих местах ничего не менялось :-)
Поэтому:
глВернутьЦену(Спр,ТипРозничной);
Функция глВернутьЦену(Товар, КатегорияЦены) Экспорт
Перем ЦеныТовара;
Перем Результат;
ЦеныТовара = СоздатьОбъект("Справочник.Цены");
ЦеныТовара.ИспользоватьВладельца(Товар);
ЦеныТовара.ВыбратьЭлементы();
Пока ЦеныТовара.ПолучитьЭлемент() = 1 Цикл
Если ЦеныТовара.ПометкаУдаления() = 1 Тогда
Продолжить;
КонецЕсли;
Если ЦеныТовара.КатегорияЦены = КатегорияЦены Тогда
Результат = ЦеныТовара.ТекущийЭлемент();
Прервать;
КонецЕсли;
КонецЦикла;
Возврат Результат;
КонецФункции
ПоказатьПоэтому:
глВернутьЦену(Спр,ТипРозничной);
ну тогда только
если как в (21)
если у товара нет элементов подчиненном справочнике, что вернет функция ? пустоезначение , т.к перем Результат ни чему не равна.
и поэтому и вылетает ошибка в
попробуй так
если
ЦенаТовара = глВернутьЦену(спр,ТипРозничной);
Если ПустоеЗначение(ЦенаТовара)=0 Тогда
ПечРозн=ЦенаТовара.Цена.Получить(РабочаяДата());
Иначе
Сообщить (Строка(Тов) +" - вот здесь собака порылась");
КонецЕсли;
если как в (21)
Функция глВернутьЦену(Товар, КатегорияЦены) Экспорт
Перем ЦеныТовара;
Перем Результат;
ЦеныТовара = СоздатьОбъект("Справочник.Цены");
ЦеныТовара.ИспользоватьВладельца(Товар);
ЦеныТовара.ВыбратьЭлементы();
Пока ЦеныТовара.ПолучитьЭлемент() = 1 Цикл
Если ЦеныТовара.ПометкаУдаления() = 1 Тогда
Продолжить;
КонецЕсли;
Если ЦеныТовара.КатегорияЦены = КатегорияЦены Тогда
Результат = ЦеныТовара.ТекущийЭлемент();
Прервать;
КонецЕсли;
КонецЦикла;
Возврат Результат;
КонецФункции
ПоказатьПерем ЦеныТовара;
Перем Результат;
ЦеныТовара = СоздатьОбъект("Справочник.Цены");
ЦеныТовара.ИспользоватьВладельца(Товар);
ЦеныТовара.ВыбратьЭлементы();
Пока ЦеныТовара.ПолучитьЭлемент() = 1 Цикл
Если ЦеныТовара.ПометкаУдаления() = 1 Тогда
Продолжить;
КонецЕсли;
Если ЦеныТовара.КатегорияЦены = КатегорияЦены Тогда
Результат = ЦеныТовара.ТекущийЭлемент();
Прервать;
КонецЕсли;
КонецЦикла;
Возврат Результат;
КонецФункции
если у товара нет элементов подчиненном справочнике, что вернет функция ? пустоезначение , т.к перем Результат ни чему не равна.
и поэтому и вылетает ошибка в
ЦенаТовара = глВернутьЦену(спр,ТипРозничной);
ПечРозн=ЦенаТовара.Цена.Получить(РабочаяДата());
ПечРозн=ЦенаТовара.Цена.Получить(РабочаяДата());
попробуй так
если
ЦенаТовара = глВернутьЦену(спр,ТипРозничной);
Если ПустоеЗначение(ЦенаТовара)=0 Тогда
ПечРозн=ЦенаТовара.Цена.Получить(РабочаяДата());
Иначе
Сообщить (Строка(Тов) +" - вот здесь собака порылась");
КонецЕсли;
в (34) есть подсказка
А, вообще, надо так
Меняйте
на
А, вообще, надо так
Меняйте
ПечРозн=ЦенаТовара.Цена.Получить(РабочаяДата());
на
Если ПустоеЗначение(ЦенаТовара)=1 Тогда
Сообщить("Пропущено: "+ПечНаименование);
Продолжить;
Иначе
ПечРозн=ЦенаТовара.Цена.Получить(РабочаяДата());
КонецЕсли;
Пишет вот такую пакость,,,,,,,ХЕЛП МИ!!!
ПечРозн=ЦенаТовара.Цена.Получить(РабочаяДата());
{E:\ПРОГРАММИРОВАНИЕ 1С\ПЕЧАТЬ ЦЕННИКОВ МОЯ.ERT(118)}: Значение не представляет агрегатный объект (Цена)
ПечРозн=ЦенаТовара.Цена.Получить(РабочаяДата());
{E:\ПРОГРАММИРОВАНИЕ 1С\ПЕЧАТЬ ЦЕННИКОВ МОЯ.ERT(118)}: Значение не представляет агрегатный объект (Цена)
так все и стояло изначально, все равно ошибка,
у меня эти операции стоят во всех обработках и работают нормально
мне кажется где-то ошибка в
он как-то неправильно но верное берет значения товара и от сюда конфликт, ЧТО ДУМАЕТЕ???
у меня эти операции стоят во всех обработках и работают нормально
мне кажется где-то ошибка в
Спр=СоздатьОбъект("Справочник.Номенклатура");
Спр.ВыбратьЭлементы();
Пока Спр.ПолучитьЭлемент()>0 Цикл
тов=Спр.ТекущийЭлемент();
Спр.ВыбратьЭлементы();
Пока Спр.ПолучитьЭлемент()>0 Цикл
тов=Спр.ТекущийЭлемент();
он как-то неправильно но верное берет значения товара и от сюда конфликт, ЧТО ДУМАЕТЕ???
вот она твоя ошибка (и заметь ТЫ ее САМ нашел, нашел в чем причина - Молодец)
у Группы нет реквизита Цена
в цикле добавь:
Если Спр.ЭтоГруппа()=1 //это группа пропустим
Продолжить;
КонецЕсли;
у Группы нет реквизита Цена
в цикле добавь:
Если Спр.ЭтоГруппа()=1 //это группа пропустим
Продолжить;
КонецЕсли;
попробуй так
если
ЦенаТовара = глВернутьЦену(спр,ТипРозничной);
Если ПустоеЗначение(ЦенаТовара)=0 Тогда
ПечРозн=ЦенаТовара.Цена.Получить(РабочаяДата());
Иначе
Сообщить (Строка(Тов) +" - вот здесь собака порылась");
КонецЕсли;
и посмотри что за сообщение появится.
если
ЦенаТовара = глВернутьЦену(спр,ТипРозничной);
Если ПустоеЗначение(ЦенаТовара)=0 Тогда
ПечРозн=ЦенаТовара.Цена.Получить(РабочаяДата());
Иначе
Сообщить (Строка(Тов) +" - вот здесь собака порылась");
КонецЕсли;
и посмотри что за сообщение появится.
о великие умы ЗаРаБотаЛо
вставил это
вставил это
Если ПустоеЗначение(ЦенаТовара)=1 Тогда
Сообщить("Пропущено: "+ПечНаименование);
Продолжить;
Иначе
ПечРозн=ЦенаТовара.Цена.Получить(РабочаяДата());
КонецЕсли;
эта операция покажет количество товара на выбраном складе и определенного товара???
Кол=Регистр.ОстаткиТоваров.СводныйОстаток(,тов,ВыбСкл,"ОстатокТовара");
а может тут бока
Если кол=1 Тогда
ДобавитьЦенник();
Иначе
для ххх=1 по Кол Цикл
ДобавитьЦенник();
КонецЦикла;
КонецЕсли;
проверил это тупит я или
задваевает остатки
Кол=Регистр.ОстаткиТоваров.СводныйОстаток(,тов,ВыбСкл,"ОстатокТовара");
задваевает остатки
(49) вот ты вопросы задаешь )))
"дайте воды попить, а то так есть хочется, что переночевать негде"
на этот вопрос ты ДОЛЖЕН сам себе ответить.
это уже совершенно другая история.
берешь новую обработку пишешь
называешь что то типа "Движение товара по регистрам"
берешь регистр
устанавливаешь фильтр на выбранный товар
выбираешь движения
документы - и смотришь какой документ у тебя этот товар записал и КАК ЗАПИСАЛ в регистр.
"дайте воды попить, а то так есть хочется, что переночевать негде"
на этот вопрос ты ДОЛЖЕН сам себе ответить.
это уже совершенно другая история.
берешь новую обработку пишешь
называешь что то типа "Движение товара по регистрам"
берешь регистр
устанавливаешь фильтр на выбранный товар
выбираешь движения
документы - и смотришь какой документ у тебя этот товар записал и КАК ЗАПИСАЛ в регистр.
заменил
на
Кол=Регистр.ОстаткиТоваров.СводныйОстаток(,тов,ВыбСкл,"ОстатокТовара");
на
Кол=Регистр.ОстаткиТоваров.Остаток(,тов,ВыбСкл,"ОстатокТовара");
по твоим словам
Регистр.ОстаткиТоваров.СводныйОстаток(,тов,ВыбСкл,"ОстатокТовара")
=
2 * Регистр.ОстаткиТоваров.Остаток(,тов,ВыбСкл,"ОстатокТовара")
и это все работает ?
Регистр.ОстаткиТоваров.СводныйОстаток(,тов,ВыбСкл,"ОстатокТовара")
=
2 * Регистр.ОстаткиТоваров.Остаток(,тов,ВыбСкл,"ОстатокТовара")
и это все работает ?
заменил
Код
Кол=Регистр.ОстаткиТоваров.СводныйОстаток(,тов,ВыбСкл,"ОстатокТовара");
на
Код
Кол=Регистр.ОстаткиТоваров.Остаток(,тов,ВыбСкл,"ОстатокТовара");
Код
Кол=Регистр.ОстаткиТоваров.СводныйОстаток(,тов,ВыбСкл,"ОстатокТовара");
на
Код
Кол=Регистр.ОстаткиТоваров.Остаток(,тов,ВыбСкл,"ОстатокТовара");
все работает проверял по остаткам все гуд
что в (55) работает я поняла, работать можно по разному
меня инетересует (54)
не всегда главное найти ошибку, иногда лучше понять проблему изза чего она возникает.
меня инетересует (54)
не всегда главное найти ошибку, иногда лучше понять проблему изза чего она возникает.
(56) ТиС для Украины сделана на основе типовой ТиС ред 8.х
Там на регистрах ведется два учета - Упр и Фин. Поэтому и сводные остатки задвоенные.
Уравнение из (54) будет верно, только в том случае, если все документы учавствуют в обоих учетах (Общ).
Общ = Упр + Фин;
Общ = 2*Упр, когда Упр = Фин.
Там на регистрах ведется два учета - Упр и Фин. Поэтому и сводные остатки задвоенные.
Уравнение из (54) будет верно, только в том случае, если все документы учавствуют в обоих учетах (Общ).
Общ = Упр + Фин;
Общ = 2*Упр, когда Упр = Фин.
блин такие грамотные люди хочется поговорить на другую тему.
Скажите милые 1с-чики есть ли книга с примерами описаний или как при покупке лицензионной 1с дают книги по бухгалтерию, есть ли книги по ТиС.
Скажите милые 1с-чики есть ли книга с примерами описаний или как при покупке лицензионной 1с дают книги по бухгалтерию, есть ли книги по ТиС.
SOS SOS SOS
Я опять нашел маленький изъян в программке.
Помогите , при печати по документам первая позиция не выходит на печать, если товара более одного то не выходит один ценник. Натолкните на путь истинный?????????????????????????????????
Я опять нашел маленький изъян в программке.
Помогите , при печати по документам первая позиция не выходит на печать, если товара более одного то не выходит один ценник. Натолкните на путь истинный?????????????????????????????????
все работает нормально ,кроме не печатает первый ценник. В чем неправильный этот код?
Если Ряд>ЧислоСтрок Тогда
Вот этот код вообще убрал
А этот изменил
И все заработало.
Если Ряд>ЧислоСтрок Тогда
А этот изменил
Столбик=5;
Ряд=0;
И все заработало.
to Chel
Кстати, позволю себе дать небольшой совет.
Имхо, конструкции типа (см 32) тяжело воспринимаются. Особенно когда разбираешься в чужом коде. Или даже если в своем, но через время.
А не проще ли так?
Кстати, позволю себе дать небольшой совет.
Имхо, конструкции типа
Столбик = ?(Столбик = 0, 1, ?(Столбик = 1, 2, ?(Столбик = 2, 3, ?(Столбик= 3,4,0))));
А не проще ли так?
Если Столбик=4 Тогда
Столбик=0;
Иначе
Столбик=Столбик+1;
КонецЕсли;
если честно я даже не понимаю что этот код делает
я просто догадался по смыслу как увеличить количество столбов
Столбик = ?(Столбик = 0, 1, ?(Столбик = 1, 2, ?(Столбик = 2, 3, ?(Столбик= 3,4,0))));
я просто догадался по смыслу как увеличить количество столбов
А вообще зачем там Ряд и Столбик где они применяются там вроде печать идет добавить или прикрепить таблицу.
Chel пишет:
если честно я даже не понимаю что этот код делает
если честно я даже не понимаю что этот код делает
Увеличивает номер столбца, пока он не станет равным 4
Chel пишет:
А вообще зачем там Ряд и Столбик где они применяются
А вообще зачем там Ряд и Столбик где они применяются
Посмотрите мою обработку
Внимание! Тема сдана в архив
Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот