Версия для печати темы (https://pro1c.org.ua/index.php?s=b6cc5b62335eec35b5e6deed957aae06&showtopic=39781)

Нажмите сюда для просмотра этой темы в обычном формате

Украинский 1С форум: всё про 1С 8.3, 1С 8.2, 1С 8.1, 1С 8.0, 1С 7.7 _ Программирование в 1С Предприятие 8.3 _ Не получается добавить нужные колонки в номенклатуру

Автор: Bulzavr 25.08.17, 16:26

Что я делаю не так??? Всего-лишь хочу добавить в номенклатуру три колонки ЦЕНА РОЗН и ЦЕНА ЗАКУП и ОСТАТКИ с выбором склада..

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

    КОНЕЦ КАК ИндексКартинки
ИЗ
        Справочник.Номенклатура КАК СпрНоменклатура
        ЛЕВОЕ СОЕДИНЕНИЕ РегистрНакопления.ТоварыНаСкладах.Остатки КАК ТоварыНаСкладахОстатки
            ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ЦеныНоменклатуры.СрезПоследних(, ) КАК ЦеныНоменклатурыСрезПоследних
            ПО ЦеныНоменклатурыСрезПоследних.Номенклатура = ТоварыНаСкладахОстатки.Номенклатура
                И ЦеныНоменклатурыСрезПоследних.Характеристика = ТоварыНаСкладахОстатки.Характеристика
        ПО ТоварыНаСкладахОстатки.Номенклатура = СпрНоменклатура.Ссылка
ГДЕ
    НЕ СпрНоменклатура.ЭтоГруппа
    ЦеныНоменклатурыСрезПоследних.ВидЦены.Наименование = ""Розничная""
{ГДЕ
    (СпрНоменклатура.Ссылка В
            (ВЫБРАТЬ
                Сегменты.Номенклатура
            ИЗ
                РегистрСведений.НоменклатураСегмента КАК Сегменты
            ГДЕ
                Сегменты.Сегмент = &СегментНоменклатуры))}


Выдаёт ошибку:
Ошибка получения информации набора данных
по причине:
Ошибка в запросе набора данных
по причине:
{(44, 2)}: Синтаксическая ошибка "ЦеныНоменклатурыСрезПоследних.ВидЦены.Наименование"
<<?>>ЦеныНоменклатурыСрезПоследних.ВидЦены.Наименование = ""Розничная""



PS: Вот моя типовая чистая:
ВЫБРАТЬ
    СпрНоменклатура.Ссылка КАК Ссылка,
    СпрНоменклатура.Код КАК Код,
    СпрНоменклатура.Наименование КАК Наименование,
    СпрНоменклатура.Артикул КАК Артикул,
    СпрНоменклатура.ВидНоменклатуры КАК ВидНоменклатуры,
    СпрНоменклатура.ЕдиницаИзмерения КАК ЕдиницаИзмерения,
    СпрНоменклатура.СтавкаНДС КАК СтавкаНДС,
    СпрНоменклатура.Родитель,
    ВЫБОР
        КОГДА СпрНоменклатура.ЕстьТоварыДругогоКачества
            ТОГДА 4 + ВЫБОР
                    КОГДА СпрНоменклатура.ПометкаУдаления
                        ТОГДА 1
                    ИНАЧЕ 0
                КОНЕЦ + ВЫБОР
                    КОГДА СпрНоменклатура.ИспользованиеХарактеристик = ЗНАЧЕНИЕ(Перечисление.ВариантыИспользованияХарактеристикНоменклатуры.НеИспользовать)
                        ТОГДА 0
                    ИНАЧЕ 2
                КОНЕЦ
        ИНАЧЕ ВЫБОР
                КОГДА СпрНоменклатура.ПометкаУдаления
                    ТОГДА 1
                ИНАЧЕ 0
            КОНЕЦ
            + ВЫБОР
                        КОГДА СпрНоменклатура.ИспользованиеХарактеристик = ЗНАЧЕНИЕ(Перечисление.ВариантыИспользованияХарактеристикНоменклатуры.НеИспользовать)
                            ТОГДА 0
                        ИНАЧЕ 2
                    КОНЕЦ

    КОНЕЦ КАК ИндексКартинки
ИЗ
    Справочник.Номенклатура КАК СпрНоменклатура
ГДЕ
    НЕ СпрНоменклатура.ЭтоГруппа
{ГДЕ
    (СпрНоменклатура.Ссылка В
            (ВЫБРАТЬ
                Сегменты.Номенклатура
            ИЗ
                РегистрСведений.НоменклатураСегмента КАК Сегменты
            ГДЕ
                Сегменты.Сегмент = &СегментНоменклатуры))}


Помогите пожалуйста...

Автор: Flexy 25.08.17, 17:00

ГДЕ
    НЕ СпрНоменклатура.ЭтоГруппа И
    ЦеныНоменклатурыСрезПоследних.ВидЦены.Наименование = ""Розничная""

Автор: Bulzavr 28.08.17, 12:28

Благодарю! Получилось, но в номенклатуре теперь не отображается ни одного товара((( Отбор пуст..

Блин, пытаюсь сделать, как в этой статье:
http://pro1c.org.ua/redirect.php?http://you1c.ru/1c82/ut11/ut-11-kak-dobavit-kolonku-v-spisok-nomenklatury

Выдаёт ошибку:

Ошибка в запросе набора данных
по причине:
{(31, 26)}: Поле не найдено "ТоварыОрганизацийОстатки.Номенклатура"
ТоварыОрганизацийОстатки.<<?>>Номенклатура КАК Номенклатура,


Помогите пожалуйста сделать три колонки ЦЕНА РОЗН и ЦЕНА ЗАКУП и ОСТАТКИ с выбором склада..

Автор: Flexy 28.08.17, 13:24

Bulzavr @ Сегодня, 12:28 * ,

ТоварыОрганизацийОстатки.АналитикаУчетаНоменклатуры.Номенклатура КАК Номенклатура,

Автор: Bulzavr 28.08.17, 14:43

Благодарю. Теперь в модуле ошибку пишет..

Вот сюда.. в конце вставил кусок кода

&НаСервере
Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)

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

    // ИнтеграцияС1СДокументооборотом
    ИнтеграцияС1СДокументооборот.ПриСозданииНаСервере(ЭтаФорма, ПанельКомандПечати);
    // Конец ИнтеграцияС1СДокументооборотом
    
    Если ПраваПользователяПовтИсп.ЭтоПартнер() Тогда
        Элементы.КоманднаяПанельСписокРасширенныйПоискНоменклатураФормаПоискПоШтрихкоду.Видимость = Ложь;
        Элементы.КоманднаяПанельСписокСтандартныйПоискНоменклатураФормаПоискПоШтрихкоду.Видимость = Ложь;
    КонецЕсли;
    
    Элементы.КоманднаяПанельСписокРасширенныйПоискНоменклатураФормаИзменитьВыделенные.Видимость = ЕстьПравоРедактирования;
    Элементы.СписокРасширенныйПоискНоменклатураКонтекстноеМенюИзменитьВыделенные.Видимость = ЕстьПравоРедактирования;
    Элементы.КоманднаяПанельСписокСтандартныйПоискНоменклатураФормаИзменитьВыделенные.Видимость = ЕстьПравоРедактирования;
    Элементы.СписокСтандартныйПоискНоменклатураКонтекстноеМенюИзменитьВыделенные.Видимость = ЕстьПравоРедактирования;
    Элементы.ИерархияНоменклатурыКонтекстноеМенюИзменитьВыделенные.Видимость = ЕстьПравоРедактирования;
    
    СобытияФорм.ПриСозданииНаСервере(ЭтаФорма, Отказ, СтандартнаяОбработка);
    
КонецПроцедуры


&НаСервере
Процедура УстановитьОтборПоЦенаНаСервере()
ЗначениеОтбора = ?(ЗначениеЗаполнено(Цена1), Цена1, Неопределено);
ОбщегоНазначенияКлиентСервер.УстановитьПараметрДинамическогоСписка(Список, «Цена1», ЗначениеОтбора, ЗначениеЗаполнено(Цена1));
ЗначениеОтбора = ?(ЗначениеЗаполнено(Цена2), Цена2, Неопределено);
ОбщегоНазначенияКлиентСервер.УстановитьПараметрДинамическогоСписка(Список, «Цена2», ЗначениеОтбора, ЗначениеЗаполнено(Цена2));
КонецПроцедуры


{Справочник.Номенклатура.Форма.ФормаСписка.Форма(77,75)}: Ожидается выражение
ОбщегоНазначенияКлиентСервер.УстановитьПараметрДинамическогоСписка(Список,<<?>> «Цена1», ЗначениеОтбора, ЗначениеЗаполнено(Цена1)); (Проверка: Сервер)
{Справочник.Номенклатура.Форма.ФормаСписка.Форма(79,75)}: Ожидается выражение
ОбщегоНазначенияКлиентСервер.УстановитьПараметрДинамическогоСписка(Список,<<?>> «Цена2», ЗначениеОтбора, ЗначениеЗаполнено(Цена2)); (Проверка: Сервер)
{Справочник.Номенклатура.Форма.ФормаСписка.Форма(77,75)}: Ожидается выражение
ОбщегоНазначенияКлиентСервер.УстановитьПараметрДинамическогоСписка(Список,<<?>> «Цена1», ЗначениеОтбора, ЗначениеЗаполнено(Цена1)); (Проверка: Тонкий клиент)
{Справочник.Номенклатура.Форма.ФормаСписка.Форма(79,75)}: Ожидается выражение
ОбщегоНазначенияКлиентСервер.УстановитьПараметрДинамическогоСписка(Список,<<?>> «Цена2», ЗначениеОтбора, ЗначениеЗаполнено(Цена2)); (Проверка: Тонкий клиент)

Автор: Petre 28.08.17, 14:45

Bulzavr @ Сегодня, 15:43 * ,
Кавычки человеческие поставьте.

Автор: Bulzavr 28.08.17, 14:46

Эммм где? Я совсем совсем новичок в языке 1с

Автор: Petre 28.08.17, 14:48

Bulzavr @ Сегодня, 15:46 * ,
У вас "елочки":

Цитата
«Цена1»


А надо:
"Цена1"

Автор: Bulzavr 28.08.17, 14:50

Поставил...

&НаСервере
Процедура УстановитьОтборПоЦенаНаСервере()
ЗначениеОтбора = ?(ЗначениеЗаполнено(Цена1), Цена1, Неопределено);
ОбщегоНазначенияКлиентСервер.УстановитьПараметрДинамическогоСписка(Список, "Цена1", ЗначениеОтбора, ЗначениеЗаполнено(Цена1));
ЗначениеОтбора = ?(ЗначениеЗаполнено(Цена2), Цена2, Неопределено);
ОбщегоНазначенияКлиентСервер.УстановитьПараметрДинамическогоСписка(Список, "Цена2", ЗначениеОтбора, ЗначениеЗаполнено(Цена2));
КонецПроцедуры


Теперь:

{Справочник.Номенклатура.Форма.ФормаСписка.Форма(76,38)}: Переменная не определена (Цена1)
ЗначениеОтбора = ?(ЗначениеЗаполнено(<<?>>Цена1), Цена1, Неопределено); (Проверка: Сервер)
{Справочник.Номенклатура.Форма.ФормаСписка.Форма(76,46)}: Переменная не определена (Цена1)
ЗначениеОтбора = ?(ЗначениеЗаполнено(Цена1), <<?>>Цена1, Неопределено); (Проверка: Сервер)
{Справочник.Номенклатура.Форма.ФормаСписка.Форма(77,119)}: Переменная не определена (Цена1)
ОбщегоНазначенияКлиентСервер.УстановитьПараметрДинамическогоСписка(Список, "Цена1", ЗначениеОтбора, ЗначениеЗаполнено(<<?>>Цена1)); (Проверка: Сервер)
{Справочник.Номенклатура.Форма.ФормаСписка.Форма(77,68)}: Переменная не определена (Список)
ОбщегоНазначенияКлиентСервер.УстановитьПараметрДинамическогоСписка(<<?>>Список, "Цена1", ЗначениеОтбора, ЗначениеЗаполнено(Цена1)); (Проверка: Сервер)
{Справочник.Номенклатура.Форма.ФормаСписка.Форма(79,68)}: Переменная не определена (Список)
ОбщегоНазначенияКлиентСервер.УстановитьПараметрДинамическогоСписка(<<?>>Список, "Цена2", ЗначениеОтбора, ЗначениеЗаполнено(Цена2)); (Проверка: Сервер)
{Справочник.Номенклатура.Форма.ФормаСписка.Форма(78,38)}: Переменная не определена (Цена2)
ЗначениеОтбора = ?(ЗначениеЗаполнено(<<?>>Цена2), Цена2, Неопределено); (Проверка: Сервер)
{Справочник.Номенклатура.Форма.ФормаСписка.Форма(78,46)}: Переменная не определена (Цена2)
ЗначениеОтбора = ?(ЗначениеЗаполнено(Цена2), <<?>>Цена2, Неопределено); (Проверка: Сервер)
{Справочник.Номенклатура.Форма.ФормаСписка.Форма(79,119)}: Переменная не определена (Цена2)
ОбщегоНазначенияКлиентСервер.УстановитьПараметрДинамическогоСписка(Список, "Цена2", ЗначениеОтбора, ЗначениеЗаполнено(<<?>>Цена2)); (Проверка: Сервер)


Везде проставить у Цена1 и Цена2 ?

Автор: Petre 28.08.17, 14:53

Цитата(Bulzavr @ 28.08.17, 15:50) *
Везде проставить у Цена1 и Цена2 ?

Нет, не везде. Сейчас у вас совсем другая ошибка: "переменная не определена". Сервер не знает, что такое "Цена1" и "Цена2".

Автор: Bulzavr 28.08.17, 14:55

Черт... Чего делать-то?

Автор: logist 28.08.17, 15:02

Такое подозрение, что этот код размещен не в форме.

Автор: Bulzavr 28.08.17, 15:11

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

Дурдом... Вставил код

ВЫБРАТЬ
СпрНоменклатура.Ссылка КАК ссылка,
СпрНоменклатура.Код КАК Код,
СпрНоменклатура.Наименование КАК Наименование,
СпрНоменклатура.ВидНоменклатуры КАК ВидНоменклатуры,
СпрНоменклатура.ЕдиницаИзмерения КАК ЕдиницаИзмерения,
СпрНоменклатура.Артикул КАК Артикул,
СпрНоменклатура.СтавкаНДС КАК СтавкаНДС,
ВложенныйЗапрос.Цена КАК Цена1,
ВложенныйЗапрос1.Цена КАК Цена2,
ВложенныйЗапрос2.КоличествоОстаток
ИЗ
Справочник.Номенклатура КАК СпрНоменклатура
ПОЛНОЕ СОЕДИНЕНИЕ (ВЫБРАТЬ
ЦеныНоменклатурыСрезПоследних.Цена КАК Цена,
ЦеныНоменклатурыСрезПоследних.Номенклатура КАК Номенклатура
ИЗ
РегистрСведений.ЦеныНоменклатуры.СрезПоследних КАК ЦеныНоменклатурыСрезПоследних
ГДЕ
ЦеныНоменклатурыСрезПоследних.ВидЦены = &Цена1) КАК ВложенныйЗапрос
ПО СпрНоменклатура.Ссылка = ВложенныйЗапрос.Номенклатура
ПОЛНОЕ СОЕДИНЕНИЕ (ВЫБРАТЬ
ЦеныНоменклатурыСрезПоследних.Цена КАК Цена,
ЦеныНоменклатурыСрезПоследних.Номенклатура КАК Номенклатура
ИЗ
РегистрСведений.ЦеныНоменклатуры.СрезПоследних КАК ЦеныНоменклатурыСрезПоследних
ГДЕ
ЦеныНоменклатурыСрезПоследних.ВидЦены = &Цена2) КАК ВложенныйЗапрос1
ПО СпрНоменклатура.Ссылка = ВложенныйЗапрос1.Номенклатура
ПОЛНОЕ СОЕДИНЕНИЕ (ВЫБРАТЬ
ТоварыОрганизацийОстатки.АналитикаУчетаНоменклатуры.Номенклатура КАК Номенклатура,
ТоварыОрганизацийОстатки.КоличествоОстаток КАК КоличествоОстаток
ИЗ
РегистрНакопления.ТоварыОрганизаций.Остатки КАК ТоварыОрганизацийОстатки) КАК ВложенныйЗапрос2
ПО СпрНоменклатура.Ссылка = ВложенныйЗапрос2.Номенклатура
ГДЕ
СпрНоменклатура.ЭтоГруппа = ЛОЖЬ
{ГДЕ
(СпрНоменклатура.Ссылка В
(ВЫБРАТЬ
Сегменты.Номенклатура
ИЗ
РегистрСведений.НоменклатураСегмента КАК Сегменты
ГДЕ
Сегменты.Сегмент = &СегментНоменклатуры)) КАК Поле2}


Вытащил на таблицу


Теперь не пойму, как разместить поля ввода (какой тип реквизита?):


Ну и далее вставляю
&НаСервере
Процедура УстановитьОтборПоЦенаНаСервере()
ЗначениеОтбора = ?(ЗначениеЗаполнено(Цена1), Цена1, Неопределено);
ОбщегоНазначенияКлиентСервер.УстановитьПараметрДинамическогоСписка(Список, "Цена1", ЗначениеОтбора, ЗначениеЗаполнено(Цена1));
ЗначениеОтбора = ?(ЗначениеЗаполнено(Цена2), Цена2, Неопределено);
ОбщегоНазначенияКлиентСервер.УстановитьПараметрДинамическогоСписка(Список, "Цена2", ЗначениеОтбора, ЗначениеЗаполнено(Цена2));
КонецПроцедуры


и облом((

Автор: logist 28.08.17, 15:33

Цитата(Bulzavr @ 28.08.17, 16:11) *
Вытащил на таблицу

Вы сами на изображении можете что-то разобрать?

upd. ПОЛНОЕ замените на ЛЕВОЕ

Автор: Bulzavr 28.08.17, 16:09

Пардон за маленькую картинку. обновил:



Заменил ПОЛНОЕ на ЛЕВОЕ в трех местах. Ничего не меняется(

{Справочник.Номенклатура.Форма.ФормаСписка.Форма(78,38)}: Переменная не определена (Цена2)
ЗначениеОтбора = ?(ЗначениеЗаполнено(<<?>>Цена2), Цена2, Неопределено); (Проверка: Сервер)
{Справочник.Номенклатура.Форма.ФормаСписка.Форма(78,46)}: Переменная не определена (Цена2)
ЗначениеОтбора = ?(ЗначениеЗаполнено(Цена2), <<?>>Цена2, Неопределено); (Проверка: Сервер)
{Справочник.Номенклатура.Форма.ФормаСписка.Форма(79,119)}: Переменная не определена (Цена2)
ОбщегоНазначенияКлиентСервер.УстановитьПараметрДинамическогоСписка(Список, "Цена2", ЗначениеОтбора, ЗначениеЗаполнено(<<?>>Цена2)); (Проверка: Сервер)


Ладно, забил на коверканье модуля и две цены.
Нашёл более простую статью.. Делаю ДВЕ колонки.

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

    КОНЕЦ КАК ИндексКартинки
ИЗ
    Справочник.Номенклатура КАК СпрНоменклатура
        ЛЕВОЕ СОЕДИНЕНИЕ РегистрНакопления.ТоварыНаСкладах.Остатки КАК ТоварыНаСкладахОстатки
            ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ЦеныНоменклатуры.СрезПоследних(, ) КАК ЦеныНоменклатурыСрезПоследних
            ПО ЦеныНоменклатурыСрезПоследних.Номенклатура = ТоварыНаСкладахОстатки.Номенклатура
                И ЦеныНоменклатурыСрезПоследних.Характеристика = ТоварыНаСкладахОстатки.Характеристика
        ПО ТоварыНаСкладахОстатки.Номенклатура = СпрНоменклатура.Ссылка
ГДЕ
    НЕ СпрНоменклатура.ЭтоГруппа И
    ЦеныНоменклатурыСрезПоследних.ВидЦены.Наименование = "Розничная"
{ГДЕ
    (СпрНоменклатура.Ссылка В
            (ВЫБРАТЬ
                Сегменты.Номенклатура
            ИЗ
                РегистрСведений.НоменклатураСегмента КАК Сегменты
            ГДЕ
                Сегменты.Сегмент = &СегментНоменклатуры))}


Всё проглатывается, но в клиенте список номенклатуры пуст!! ПОМОГИИИТЕЕЕЕ

Автор: logist 28.08.17, 16:27

Цитата(Bulzavr @ 28.08.17, 17:09) *
Заменил ПОЛНОЕ на ЛЕВОЕ в трех местах. Ничего не меняется(

Это было замечание к тексту запроса.

Вам необходимо в окне реквизитов добавить два реквизита с типом справочникссылка.видыцен (или как-то так) и назвать их Цена1 и Цена2, затем разместить их на форме.

Автор: Bulzavr 28.08.17, 16:38

{Справочник.Номенклатура.Форма.ФормаСписка.Форма(77,68)}: Переменная не определена (Список)
ОбщегоНазначенияКлиентСервер.УстановитьПараметрДинамическогоСписка(<<?>>Список, "Цена1", ЗначениеОтбора, ЗначениеЗаполнено(Цена1)); (Проверка: Сервер)
{Справочник.Номенклатура.Форма.ФормаСписка.Форма(79,68)}: Переменная не определена (Список)
ОбщегоНазначенияКлиентСервер.УстановитьПараметрДинамическогоСписка(<<?>>Список, "Цена2", ЗначениеОтбора, ЗначениеЗаполнено(Цена2)); (Проверка: Сервер)

Автор: logist 28.08.17, 16:42

На скрине не вижно как называется реквизит со списком. Рискну предположить - СписокРасширенный

Автор: Bulzavr 28.08.17, 16:46



Может у меня типы цен не заданы? Не пойму, где их найти


 ! 

http://pro1c.org.ua/index.php?act=announce&id=2: 3
 

Автор: logist 28.08.17, 17:21

ОбщегоНазначенияКлиентСервер.УстановитьПараметрДинамическогоСписка(СписокНоменклатуры, "Цена1", ЗначениеОтбора, ЗначениеЗаполнено(Цена1));

Автор: Bulzavr 29.08.17, 8:48

{Справочник.Номенклатура.Форма.ФормаСписка.Форма(9,68)}: Переменная не определена (СписокНоменклатуры)
ОбщегоНазначенияКлиентСервер.УстановитьПараметрДинамическогоСписка(<<?>>СписокНоменклатуры, "Цена1", ЗначениеОтбора, ЗначениеЗаполнено(Цена1)); (Проверка: Сервер)
{Справочник.Номенклатура.Форма.ФормаСписка.Форма(11,68)}: Переменная не определена (СписокНоменклатуры)
ОбщегоНазначенияКлиентСервер.УстановитьПараметрДинамическогоСписка(<<?>>СписокНоменклатуры, "Цена2", ЗначениеОтбора, ЗначениеЗаполнено(Цена2)); (Проверка: Сервер)


Хммм.. сделал "СписокНоменклатура" и всё проглотилось... Сейчас буду тестировать)))

Хныыыыыы


Автор: logist 29.08.17, 10:45

Цитата(Bulzavr @ 29.08.17, 9:48) *
Хныыыыыы

В полях Цена1 и Цена2 в событии ПриИзменении установить вызов процедуры которая устанавливает параметры списка, и ПриСоздании формы тоже

Автор: Bulzavr 29.08.17, 10:49

Цитата(logist @ 29.08.17, 11:45) *
в событии ПриИзменении установить вызов процедуры

Простите, кого позвать? )))

Автор: logist 29.08.17, 11:03

Цитата(Bulzavr @ 29.08.17, 11:49) *
Простите, кого позвать? )))

Программиста позовите wink.gif

Автор: Bulzavr 29.08.17, 11:10

Франчайзи идут мимо! Мне уже 2 м..дака запросили 2 часа (4тыс) за то, чтобы в конфе одну галочку убрать, а другую поставить...
Я пытаюсь всего-лишь пару колонок добавить и всё. Неужели так сложно дать рабочий код?

Автор: logist 29.08.17, 11:12

Цитата(Bulzavr @ 29.08.17, 12:10) *
Франчайзи идут мимо!

Я не предлагал свои услуги, я всего лишь ответил на ваш вопрос.

Цитата(Bulzavr @ 29.08.17, 12:10) *
Неужели так сложно дать рабочий код?

Вскопайте мне огород, это же не сложно, вообще знаний никаких не надо.

Автор: Bulzavr 29.08.17, 11:15

Ну вообще-то форум на то и форум, чтобы человек задавал вопрос, ему на него отвечали (решением в данном случае), а потом всё это будет индексироваться поисковиками, что благополучно для форума. Поэтому извольте пожалуйста дельный ответ дать - в данном случае написать сразу верный синтаксис моей цели (устранить ошибку в коде, если хотите). Без обид, но это действительно обретает данный смысл.

Речь ведь идёт об элементарщине для вашего уровня знаний. Так чего вам стоит один раз лопатой капнуть?

Автор: logist 29.08.17, 11:22

Цитата(Bulzavr @ 29.08.17, 12:15) *
чтобы человек задавал вопрос, ему на него отвечали

Вы путаете дать ответ на вопрос и сделать всю работу за того парня.

Цитата(Bulzavr @ 29.08.17, 12:15) *
Поэтому извольте пожалуйста

57000000.gif

Цитата(Bulzavr @ 29.08.17, 12:15) *
Так чего вам стоит один раз лопатой капнуть?

Уже копнул несколько раз, а вы мне предлагаете копать весь огород.

Автор: Vofka 29.08.17, 13:09

Цитата(Bulzavr @ 29.08.17, 12:10) *
Мне уже 2 м..дака запросили 2 часа (4тыс)

4 тысячи за 2 часа?


Bulzavr, если вернуться в конструктивное русло, то вот вам ответили:
Цитата(logist @ 29.08.17, 11:45) *
В полях Цена1 и Цена2 в событии ПриИзменении установить вызов процедуры которая устанавливает параметры списка, и ПриСоздании формы тоже

Если вы не понимаете о чем тут написано, то это печаль, т.к. по другому это описать нельзя...

Автор: sava1 29.08.17, 13:12

Цитата(Vofka @ 29.08.17, 14:09) *
Если вы не понимаете о чем тут написано,
, то ,может, франчи были правы насчет 4 тысч ?

Автор: Bulzavr 29.08.17, 14:01

Vofka @ Сегодня, 14:09 * ,

А не вариант готовый кусок кода мне дать и просто сказать, куда его положить? ))

Автор: logist 29.08.17, 14:12

Цитата(Bulzavr @ 29.08.17, 15:01) *
А не вариант готовый кусок кода мне дать

Не вариант, потому что готовый кусок, лежащий не важно где, работать не будет, нужно сделать то что написано в сообщении http://pro1c.org.ua/topic/ne-poluchaetsya-dobavit-nuzhnye-kolonki-v-nomenklaturu-39781/?view=findpost&p=131392

Цитата(Vofka @ 29.08.17, 14:09) *
4 тысячи за 2 часа?

Вова, это Раша, и вероятно МСК

Автор: Bulzavr 29.08.17, 14:51

Цитата(logist @ 29.08.17, 11:45) *
В полях Цена1 и Цена2 в событии ПриИзменении установить вызов процедуры которая устанавливает параметры списка, и ПриСоздании формы тоже

Эммм.. где эту процедуру-то взять? ))

Автор: logist 29.08.17, 15:29

Цитата(Bulzavr @ 29.08.17, 15:51) *
где эту процедуру-то взять? ))

Создать. Нажатием на лупу. И в созданной процедуре вызвать вашу процедуру УстановитьОтборПоЦенаНаСервере()

Автор: Bulzavr 29.08.17, 16:50

Он спрашивает где создать? На клиенте? На сервере? Или создать на клиенте и вызвать на сервере (как-то так вроде)

Автор: logist 30.08.17, 7:33

На клиенте

Автор: Bulzavr 30.08.17, 10:14

Мля, не понимаю как так???!!! Сделал всё В ТОЧНОСТИ как на видео!!!! КАЖДЫЙ щелчок мышью повторял:
http://pro1c.org.ua/redirect.php?https://www.youtube.com/watch?v=-Ssr1WylMPQ

Итог - колонка есть, а цифр никаких в ней нет.

PS: Перед началом естественно вернул конфу в девственное состояние))

Оп это я олень простите! Первоначальные остатки неверно задал

Автор: Bulzavr 30.08.17, 12:21

Правильно-ли записано?

ЕСТЬNULL(ТоварыНаСкладахОстатки.ВНаличииОстаток, 0)


Если поставить пробел между ЕСТЬ и NULL? выдаёт синтакс. ошибку.

Проблема - Если товара нет в наличии, то в колонке пусто, а должен стоять "0"


Вот код.. Мож в нем строка эта неверна?
ВЫБРАТЬ
    СпрНоменклатура.Ссылка КАК Ссылка,
    СпрНоменклатура.Код КАК Код,
    СпрНоменклатура.Наименование КАК Наименование,
    СпрНоменклатура.Артикул КАК Артикул,
    СпрНоменклатура.ВидНоменклатуры КАК ВидНоменклатуры,
    СпрНоменклатура.ЕдиницаИзмерения КАК ЕдиницаИзмерения,
    СпрНоменклатура.СтавкаНДС КАК СтавкаНДС,
    СпрНоменклатура.Родитель,
    ВЫБОР
        КОГДА СпрНоменклатура.ЕстьТоварыДругогоКачества
            ТОГДА 4 + ВЫБОР
                    КОГДА СпрНоменклатура.ПометкаУдаления
                        ТОГДА 1
                    ИНАЧЕ 0
                КОНЕЦ + ВЫБОР
                    КОГДА СпрНоменклатура.ИспользованиеХарактеристик = ЗНАЧЕНИЕ(Перечисление.ВариантыИспользованияХарактеристикНоменклатуры.НеИспользовать)
                        ТОГДА 0
                    ИНАЧЕ 2
                КОНЕЦ
        ИНАЧЕ ВЫБОР
                КОГДА СпрНоменклатура.ПометкаУдаления
                    ТОГДА 1
                ИНАЧЕ 0
            КОНЕЦ + ВЫБОР
                КОГДА СпрНоменклатура.ИспользованиеХарактеристик = ЗНАЧЕНИЕ(Перечисление.ВариантыИспользованияХарактеристикНоменклатуры.НеИспользовать)
                    ТОГДА 0
                ИНАЧЕ 2
            КОНЕЦ
    КОНЕЦ КАК ИндексКартинки,
    ЕСТЬNULL(ТоварыНаСкладахОстатки.ВНаличииОстаток, 0) КАК Остатки
ИЗ
    Справочник.Номенклатура КАК СпрНоменклатура
        ЛЕВОЕ СОЕДИНЕНИЕ РегистрНакопления.ТоварыНаСкладах.Остатки КАК ТоварыНаСкладахОстатки
        ПО (ТоварыНаСкладахОстатки.Номенклатура = СпрНоменклатура.Ссылка)


Может потому, что ТИП поля стоит "Число" (которое не может быть нулём)? Не пойму, как изменить тип на "Строка".. Нету такого в свойствах поля

Помогите пожалуйста.. Уперся вот во что:

1. Нужно, чтобы в колонках ЦЕНА и ОСТАТКИ отображались нули, если цены или остатки не заполнены или имеют значение 0.
2. Сейчас при открытии номенклатуры отображаются только те товар, у которых установлена цена или остаток. В чём может быть проблема?

Автор: Bulzavr 30.08.17, 14:38

Ну не бросайте меня... Я ведь уже у цели

Автор: sava1 30.08.17, 14:49

case when IsNULL(ТоварыНаСкладахОстатки.ВНаличииОстаток, 0)=0 THEN 0 ELSE  ТоварыНаСкладахОстатки.ВНаличииОстаток END КАК Остатки

Автор: Bulzavr 30.08.17, 17:15

Цитата(sava1 @ 30.08.17, 15:49) *
case when IsNULL(ТоварыНаСкладахОстатки.ВНаличииОстаток, 0)=0 THEN 0 ELSE ТоварыНаСкладахОстатки.ВНаличииОстаток END КАК Остатки


не сработало. Вставил вместо ЕСТЬNULL(ТоварыНаСкладахОстатки.ВНаличииОстаток, 0) КАК Остатки

Не вижу в этой строке условия что-то типа "ЕСЛИ ОСТАТОК ПУСТОЙ" (могут быть товары не просто с нулевым остатком, а вообще с незаполненным и тогда должно показать 0)

Иными словами какое значение имеет регистр накопления остатков в случае отсутствия какого-либо значения вообще?

Хах жооооость.. В формате хоть и нет такого пункта, но его можно вручную ввести. Сделал "ЧН=0". Теперь всё как надо))

Горе с ценой теперь((( Ну вообще никак не получается. Прикол в том, что выводились раньше хоть те товары, у которых стояла цена, а теперь вообще никакие не выводятся. Это после того случилось, как я удалил объект вид цены Розничная (нужно было). Но сразу же создал такой же вид с тем же именем.. Что, теперь не может по названию найти?:
ЦеныНоменклатурыСрезПоследних.ВидЦены.Наименование = "Розничная"

Как найти вид цены по какому-нибудь идентификатору? Не по имени?

Сделал так:

ВЫБРАТЬ ПЕРВЫЕ 1
    СпрВидЦен.Ссылка КАК Розница
ПОМЕСТИТЬ ВтРозница
ИЗ
    Справочник.ВидыЦен КАК СпрВидЦен
ГДЕ
    СпрВидЦен.Наименование = "Розничная"
;

ВЫБРАТЬ
    СпрНоменклатура.Ссылка КАК Ссылка,
    СпрНоменклатура.Код КАК Код,
    СпрНоменклатура.Наименование КАК Наименование,
    СпрНоменклатура.Артикул КАК Артикул,
    СпрНоменклатура.ВидНоменклатуры КАК ВидНоменклатуры,
    СпрНоменклатура.ЕдиницаИзмерения КАК ЕдиницаИзмерения,
    СпрНоменклатура.СтавкаНДС КАК СтавкаНДС,
    СпрНоменклатура.Родитель,
    ВЫБОР
        КОГДА СпрНоменклатура.ЕстьТоварыДругогоКачества
            ТОГДА 4 + ВЫБОР
                    КОГДА СпрНоменклатура.ПометкаУдаления
                        ТОГДА 1
                    ИНАЧЕ 0
                КОНЕЦ + ВЫБОР
                    КОГДА СпрНоменклатура.ИспользованиеХарактеристик = ЗНАЧЕНИЕ(Перечисление.ВариантыИспользованияХарактеристикНоменклатуры.НеИспользовать)
                        ТОГДА 0
                    ИНАЧЕ 2
                КОНЕЦ
        ИНАЧЕ ВЫБОР
                КОГДА СпрНоменклатура.ПометкаУдаления
                    ТОГДА 1
                ИНАЧЕ 0
            КОНЕЦ + ВЫБОР
                КОГДА СпрНоменклатура.ИспользованиеХарактеристик = ЗНАЧЕНИЕ(Перечисление.ВариантыИспользованияХарактеристикНоменклатуры.НеИспользовать)
                    ТОГДА 0
                ИНАЧЕ 2
            КОНЕЦ
    КОНЕЦ КАК ИндексКартинки,
    ТоварыНаСкладахОстатки.ВНаличииОстаток КАК Остатки,
    ЦеныНоменклатурыСрезПоследних.Цена КАК Цена
ИЗ
    Справочник.Номенклатура КАК СпрНоменклатура
        ЛЕВОЕ СОЕДИНЕНИЕ РегистрНакопления.ТоварыНаСкладах.Остатки КАК ТоварыНаСкладахОстатки
        ПО (ТоварыНаСкладахОстатки.Номенклатура = СпрНоменклатура.Ссылка)
         ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ЦеныНоменклатуры.СрезПоследних(, ВидЦены В (Выбрать Вт.Розница Из ВтРозница КАК Вт)) КАК ЦеныНоменклатурыСрезПоследних
        ПО (ТоварыНаСкладахОстатки.Номенклатура = ЦеныНоменклатурыСрезПоследних.Номенклатура)
ГДЕ
    НЕ СпрНоменклатура.ЭтоГруппа


Номенклатура появляется вся, колонка "остаток" в норме, но в колонке "цена" ничего нет(((

Помогите умоляю!!

Автор: andr_andrey 30.08.17, 17:26

Bulzavr @ Сегодня, 18:15 * ,
Цена выбирается на текущий момент из регистра сведений "ЦеныНоменклатуры", где ВидЦены = какой-то первой цене из справочника "ВидыЦен" с наименованием "Розничная"?

Если цена пуста, значит нет такого соответствия по указанным условиям, проверьте данные в этом регистре и справочнике, и убедитесь, что Номенклатуры из результата им соответствуют.

Автор: Bulzavr 31.08.17, 8:51

Спасибо большое! Почти получилось.. У товаров с нулевым остатком не отображается цена. Как сделать, чтобы все цены отображались?

и такой вопрос.. Если нужно будет отображать другой вид цен, как его задать?

ВЫБРАТЬ
    СпрНоменклатура.Ссылка КАК Ссылка,
    СпрНоменклатура.Код КАК Код,
    СпрНоменклатура.Наименование КАК Наименование,
    СпрНоменклатура.Артикул КАК Артикул,
    СпрНоменклатура.ВидНоменклатуры КАК ВидНоменклатуры,
    СпрНоменклатура.ЕдиницаИзмерения КАК ЕдиницаИзмерения,
    СпрНоменклатура.СтавкаНДС КАК СтавкаНДС,
    СпрНоменклатура.Родитель,
    ВЫБОР
        КОГДА СпрНоменклатура.ЕстьТоварыДругогоКачества
            ТОГДА 4 + ВЫБОР
                    КОГДА СпрНоменклатура.ПометкаУдаления
                        ТОГДА 1
                    ИНАЧЕ 0
                КОНЕЦ + ВЫБОР
                    КОГДА СпрНоменклатура.ИспользованиеХарактеристик = ЗНАЧЕНИЕ(Перечисление.ВариантыИспользованияХарактеристикНоменклатуры.НеИспользовать)
                        ТОГДА 0
                    ИНАЧЕ 2
                КОНЕЦ
        ИНАЧЕ ВЫБОР
                КОГДА СпрНоменклатура.ПометкаУдаления
                    ТОГДА 1
                ИНАЧЕ 0
            КОНЕЦ + ВЫБОР
                КОГДА СпрНоменклатура.ИспользованиеХарактеристик = ЗНАЧЕНИЕ(Перечисление.ВариантыИспользованияХарактеристикНоменклатуры.НеИспользовать)
                    ТОГДА 0
                ИНАЧЕ 2
            КОНЕЦ
    КОНЕЦ КАК ИндексКартинки,
    ТоварыНаСкладахОстатки.ВНаличииОстаток КАК Остаток,
    ЦеныНоменклатуры.Цена
ИЗ
    Справочник.Номенклатура КАК СпрНоменклатура
        ЛЕВОЕ СОЕДИНЕНИЕ РегистрНакопления.ТоварыНаСкладах.Остатки КАК ТоварыНаСкладахОстатки
        ПО (ТоварыНаСкладахОстатки.Номенклатура = СпрНоменклатура.Ссылка)
        ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ЦеныНоменклатуры КАК ЦеныНоменклатуры
        ПО (ЦеныНоменклатуры.Номенклатура = ТоварыНаСкладахОстатки.Номенклатура)
ГДЕ
    НЕ СпрНоменклатура.ЭтоГруппа
{ГДЕ
    (СпрНоменклатура.Ссылка В
            (ВЫБРАТЬ
                Сегменты.Номенклатура
            ИЗ
                РегистрСведений.НоменклатураСегмента КАК Сегменты
            ГДЕ
                Сегменты.Сегмент = &СегментНоменклатуры))}

Украинский 1С форум: всё про 1С 8.3, 1С 8.2, 1С 8.1, 1С 8.0, 1С 7.7
https://pro1c.org.ua