УТП остатки номенклатуры в списке справочника
2 страниц
1 2 >
07.10.12, 13:14
Говорящий
Группа: Пользователи
Сообщений: 85
Из: Днепропетровск
Спасибо сказали: 1 раз
Рейтинг: 0
Подскажите, пожайлуста, как написать программку
с помощью которой выводились бы остатки (к-во) номенклатуры
в списке справочника номенклатура (рядом с каждым наименованием).
Для 1С: 8.2 УТП для Украины 1.2.9.1 от 23.08.2012.
В типовой конфигурации остатки выводятся внизу только
для одной текущей позиции.
Спасибо.
Сообщение отредактировал logist - 07.10.12, 13:34
07.10.12, 14:22
Говорящий
Группа: Пользователи
Сообщений: 85
Из: Днепропетровск
Спасибо сказали: 1 раз
Рейтинг: 0
Цитата(Ardi @ 07.10.12, 14:56)
В документе "Реализация" и других нажать кнопку "Подбор".
При нажатии кнопки подбор остаток можно увидеть
только по одной текущей позиции.
А нужно что бы при открытии справочника "Номенклатура"
(через меню Справочники-Номенклатура) остатки отображались рядом с наименованием каждого товара!
Очень нужно!
07.10.12, 16:00
Говорящий
Группа: Пользователи
Сообщений: 85
Из: Днепропетровск
Спасибо сказали: 1 раз
Рейтинг: 0
Цитата(Ardi @ 07.10.12, 15:30)
Есть варианты: 1) Обучение программированию - 4500 грн., 40 часов лекций, 200 часов самостоятельных занятий. 2) Вызвать специалиста - 450 грн. Нифига подобного, там варианты.
Варианты есть при нажатии кнопки подбор?
И там есть возможность видеть остатки по всем позициям сразу?
Или можно видеть остатки по всем позициям сразу при открытии
справочника из меню Справочники-Номенклатура?
Цитата(Vofka @ 07.10.12, 15:57)
Если я не ошибаюсь, то в какой-то книге Радченко (по-моему "Простые примеры разработки") есть пример, который демонстрирует то, что вам нужно.
Спасибо за наводку!
07.10.12, 17:09
Живет на форуме
Группа: Пользователи
Сообщений: 4121
Из: Киев
Спасибо сказали: 957 раз
Рейтинг: 0
Цитата(nazarenko @ 07.10.12, 17:00)
Варианты есть при нажатии кнопки подбор? И там есть возможность видеть остатки по всем позициям сразу?
В подборе можно видеть остатки и резервы по всем сразу.
Цитата(nazarenko @ 07.10.12, 15:37)
Я сам программист (в 1С 7.7 программирую более 10 лет!). А вот с 8-ой пока не очень. Что называется 1-раз в первый класс!
Вот немного неправильный вариант. Правильно делать "При получении данных"
Процедура СписокПриВыводеСтроки(Элемент, ОформлениеСтроки, ДанныеСтроки)
Если ДанныеСтроки.Ссылка.ЭтоГруппа Тогда
Возврат ;
КонецЕсли ;
мПоискОбъектовВСпискахДанных.СписокПриВыводеСтрокиСпискаОтбораДанных(Элемент, ОформлениеСтроки, ДанныеСтроки);
запрос = Новый Запрос;
если РольДоступна("ПолныеПрава" ) или ИмяПользователя() = "Менеджер по продажам2" Тогда
запрос.Текст = "ВЫБРАТЬ
| ЦеныНоменклатурыСрезПоследних.Валюта,
| ЦеныНоменклатурыСрезПоследних.Цена,
| ЦеныНоменклатурыСрезПоследних.ЕдиницаИзмерения,
| ЦеныНоменклатурыСрезПоследних.ТипЦен.Наименование,
| 1 КАК Поле1
|ИЗ
| РегистрСведений.ЦеныНоменклатуры.СрезПоследних(
| ,
| Номенклатура = &Номенкл
| И ТипЦен = &ТипЦен) КАК ЦеныНоменклатурыСрезПоследних
|
|ОБЪЕДИНИТЬ
|
|ВЫБРАТЬ
| ЦеныНоменклатурыКонтрагентовСрезПоследних.Валюта,
| ЦеныНоменклатурыКонтрагентовСрезПоследних.Цена,
| ЦеныНоменклатурыКонтрагентовСрезПоследних.ЕдиницаИзмерения,
| ЦеныНоменклатурыКонтрагентовСрезПоследних.ТипЦен.Наименование,
| 2
|ИЗ
| РегистрСведений.ЦеныНоменклатурыКонтрагентов.СрезПоследних(, Номенклатура = &Номенкл) КАК ЦеныНоменклатурыКонтрагентовСрезПоследних
|
|ОБЪЕДИНИТЬ
|
|ВЫБРАТЬ
| 3,
| ТоварыНаСкладахОстатки.КоличествоОстаток,
| 3,
| 3,
| 3
|ИЗ
| РегистрНакопления.ТоварыНаСкладах.Остатки(
| ,
| Номенклатура = &Номенкл
| И (&ВсеСклады
| ИЛИ Склад = &ВыбСклад)) КАК ТоварыНаСкладахОстатки
|
|ОБЪЕДИНИТЬ
|
|ВЫБРАТЬ
| 4,
| ТоварыВРезервеНаСкладахОстатки.КоличествоОстаток,
| 4,
| 4,
| 4
|ИЗ
| РегистрНакопления.ТоварыВРезервеНаСкладах.Остатки(
| ,
| Номенклатура = &Номенкл
| И (&ВсеСклады
| ИЛИ Склад = &ВыбСклад)) КАК ТоварыВРезервеНаСкладахОстатки" ;
Иначе
запрос.Текст = "ВЫБРАТЬ
| ЦеныНоменклатурыСрезПоследних.Валюта,
| ЦеныНоменклатурыСрезПоследних.Цена,
| ЦеныНоменклатурыСрезПоследних.ЕдиницаИзмерения,
| ЦеныНоменклатурыСрезПоследних.ТипЦен.Наименование,
| 1 КАК Поле1
|ИЗ
| РегистрСведений.ЦеныНоменклатуры.СрезПоследних(
| ,
| Номенклатура = &Номенкл
| И ТипЦен = &ТипЦен) КАК ЦеныНоменклатурыСрезПоследних
|
|ОБЪЕДИНИТЬ
|
|ВЫБРАТЬ
| NULL,
| NULL,
| NULL,
| NULL,
| 2
|
|ОБЪЕДИНИТЬ
|
|ВЫБРАТЬ
| 3,
| ТоварыНаСкладахОстатки.КоличествоОстаток,
| 3,
| 3,
| 3
|ИЗ
| РегистрНакопления.ТоварыНаСкладах.Остатки(
| ,
| Номенклатура = &Номенкл
| И (&ВсеСклады
| ИЛИ Склад = &ВыбСклад)) КАК ТоварыНаСкладахОстатки
|
|ОБЪЕДИНИТЬ
|
|ВЫБРАТЬ
| 4,
| ТоварыВРезервеНаСкладахОстатки.КоличествоОстаток,
| 4,
| 4,
| 4
|ИЗ
| РегистрНакопления.ТоварыВРезервеНаСкладах.Остатки(
| ,
| Номенклатура = &Номенкл
| И (&ВсеСклады
| ИЛИ Склад = &ВыбСклад)) КАК ТоварыВРезервеНаСкладахОстатки" ;
КонецЕсли ;
Запрос.УстановитьПараметр("Номенкл" ,ДанныеСтроки.Ссылка);
Запрос.УстановитьПараметр("ТипЦен" ,Константы.ТипыЦенНоменклатурыРозница.Получить());
Запрос.УстановитьПараметр("ВсеСклады" , ВыбСклад.Пустая());
Запрос.УстановитьПараметр("ВыбСклад" , ВыбСклад);
ааа=запрос.Выполнить().Выгрузить();
ТоварОстаток=0 ;
ТоварРезерв=0 ;
Если ааа.Количество()>0 Тогда
ОформлениеСтроки.Ячейки.ЦенаРозничная.Значение= "" ;
ОформлениеСтроки.Ячейки.ЦенаЗакупочная.Значение= "" ;
ОформлениеСтроки.Ячейки.ОстатокТовара.Значение= "" ;
для каждого ббб из ааа цикл
если ббб.Поле1 =1 Тогда
ОформлениеСтроки.Ячейки.ЦенаРозничная.Значение= "" +ббб.Цена+" " +ббб.Валюта;
ИначеЕсли ббб.Поле1 =2 Тогда
если РольДоступна("ПолныеПрава" ) или ИмяПользователя() = "Менеджер по продажам2" Тогда
ОформлениеСтроки.Ячейки.ЦенаЗакупочная.Значение= "" +ббб.Цена+" " +ббб.Валюта;
КонецЕсли ;
ИначеЕсли ббб.Поле1 =3 Тогда
ТоварОстаток=?(ббб.Цена=Null ,0 ,ббб.Цена);
ИначеЕсли ббб.Поле1 =4 Тогда
ТоварРезерв=?(ббб.Цена=Null ,0 ,ббб.Цена);
КонецЕсли ;
КонецЦикла ;
Иначе
ОформлениеСтроки.Ячейки.ЦенаРозничная.Значение= "" ;
КонецЕсли ;
ОстатокСРезевром=ТоварОстаток-ТоварРезерв;
ОформлениеСтроки.Ячейки.ОстатокТовара.Значение= "" +?(ОстатокСРезевром=0 ,"" ,ОстатокСРезевром);
ОформлениеСтроки.Ячейки.Резерв.Значение= "" +?(ТоварРезерв=0 ,"" ,ТоварРезерв);
КонецПроцедуры
07.10.12, 18:16
Говорящий
Группа: Пользователи
Сообщений: 85
Из: Днепропетровск
Спасибо сказали: 1 раз
Рейтинг: 0
Цитата(Ardi @ 07.10.12, 18:09)
В подборе можно видеть остатки и резервы по всем сразу.
ОГО какая БОЬШАЯ!!!
Спасибо за труды!
А нельзя как нибудь по "легче" написать?, пардон ))).
Что то типа как в 7.7
Ост = Ит.СКД(СчетТМЦ,"К" ,,МестоХранения,ТекущийЭлемент());
)))???
Так же не понятна фраза "При получении данных"?
Эта название процедуры?
Пишет ошибка
{Справочник.Номенклатура.Форма.ФормаСписка.Форма(1020,50)}: Переменная не определена (ВыбСклад)
Не выбран склад!
А как написать по всем складам?
Сообщение отредактировал MATEVI - 07.10.12, 21:04
07.10.12, 22:28
Говорящий
Группа: Пользователи
Сообщений: 85
Из: Днепропетровск
Спасибо сказали: 1 раз
Рейтинг: 0
! Я не желаю читать правила...
Сообщение отредактировал MATEVI - 07.10.12, 23:26
08.10.12, 23:20
Живет на форуме
Группа: Пользователи
Сообщений: 4121
Из: Киев
Спасибо сказали: 957 раз
Рейтинг: 0
Поехали дальше
Процедура ПоказатьОстаткиВДокументе(ОформленияСтрок)
Массив = Новый Массив;
Для Каждого ОформлениеСтроки из ОформленияСтрок Цикл
Массив.Добавить(ОформлениеСтроки.ДанныеСтроки.Номенклатура);
КонецЦикла ;
Запрос = Новый Запрос;
Запрос.Текст = "ВЫБРАТЬ
| ТоварыНаСкладахОстатки.Номенклатура,
| ТоварыНаСкладахОстатки.КоличествоОстаток КАК ОстатокНаВыбраномСкладе,
| ТоварыНаСкладахОстатки1.КоличествоОстаток КАК ОстатокНаОстальныхСкладах
|ИЗ
| РегистрНакопления.ТоварыНаСкладах.Остатки(, Склад = &ВыбСклад) КАК ТоварыНаСкладахОстатки
| ПОЛНОЕ СОЕДИНЕНИЕ РегистрНакопления.ТоварыНаСкладах.Остатки(, Склад <> &ВыбСклад) КАК ТоварыНаСкладахОстатки1
| ПО ТоварыНаСкладахОстатки.Номенклатура = ТоварыНаСкладахОстатки1.Номенклатура
|ГДЕ
| ТоварыНаСкладахОстатки.Номенклатура В(&спНоменклатура)" ;
Запрос.УстановитьПараметр("ВыбСклад" ,УправлениеПользователями.ПолучитьЗначениеПоУмолчанию(ПараметрыСеанса.ТекущийПользователь, "ОсновнойСклад" ));
Запрос.УстановитьПараметр("спНоменклатура" ,Массив);
ТЗ=запрос.Выполнить().Выгрузить();
Для Каждого ОформлениеСтроки из ОформленияСтрок Цикл
строкаТЗ=тз.Найти(Новый Структура("Номенклатура" ,ОформлениеСтроки.ДанныеСтроки.Номенклатура));
строкаТЗ=тз.Найти(ОформлениеСтроки.ДанныеСтроки.Номенклатура, "Номенклатура" );
Если строкаТЗ = Неопределено Тогда
зн1 ="" ; зн2 ="" ;
Иначе
зн1 =строкаТЗ.ОстатокНаВыбраномСкладе;
зн2 =строкаТЗ.ОстатокНаОстальныхСкладах;
КонецЕсли ;
ОформлениеСтроки.Ячейки.ОстатокТекущегоСклада.Значение=зн1 ;
ОформлениеСтроки.Ячейки.ОстатокОстальныхСкладов.Значение=зн2 ;
КонецЦикла ;
КонецПроцедуры
Процедура ДокументСписокПриПолученииДанных(Элемент, ОформленияСтрок)
ПоказатьОстаткиВДокументе(ОформленияСтрок);
КонецПроцедуры
09.10.12, 9:16
Говорящий
Группа: Пользователи
Сообщений: 85
Из: Днепропетровск
Спасибо сказали: 1 раз
Рейтинг: 0
Пишет ошибку:
Поле объекта не обнаружено (Номенклатура) для строки
Массив.Добавить(ОформлениеСтроки.ДанныеСтроки.Номенклатура);
Для меня это вообще загадка природы! )))
Что там надо писать?
Не нашли ответа на свой вопрос?
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
1С Предприятие 8.3, 1С Предприятие 8.2, 1С Предприятие 8.1, 1С Предприятие 8.0, 1С Предприятие 7.7, Литература 1С, Общие вопросы по администрированию 1С, Методическая поддержка 1С - всё в одном месте: на Украинском 1С форуме!