Заказы на доработку 1С (сервис удаленной работы)

Хранилище

База знаний
Неназначенных незавершенных заказов: 2
Бесплатные отчеты, обработки, конфигурации, внешние компоненты для 1С Статьи, описание работы, методики по работе с 1С

Здравствуйте, гость ( Вход | Зарегистрироваться )



> как вынести из регистра накопления остатков информацию о наличии товаров на складе          
Стажёр Подменю пользователя
сообщение 02.11.10, 5:14
Сообщение #1

Общительный
**
Группа: Пользователи
Сообщений: 35
Из: Томск
Спасибо сказали: 0 раз
Рейтинг: 0

Здравствуйте!
Необходимо решить такую задачку: Необходимо проверить наличие товара на складе (сколько выбранного товара имеется в наличии на складе).
Подскажите пожалуйста, что я делаю не правильно?

Процедура ТМЦПриВыводеСтроки(Элемент, ОформлениеСтроки, ДанныеСтроки)

    ОстаткиТМЦ=РегистрыНакопления.уатПартииТоваровНаСкладах;

    ТекТМЦ=ЭлементыФормы.ТМЦ.ТекущиеДанные.НаименованиеТМЦ;

    Отбор=Новый Структура();

    Отбор.Вставить("Номенклатура",ТекТМЦ);

    ТаблицаОст=ОстаткиТМЦ.Остатки(МоментВремени(),Отбор,"Номенклатура","Количество");

    НаличиеНаЦентральномСкладе=ТаблицаОст.Итог("Количество");

КонецПроцедуры
Причина редактирования: Для вставки кода используйте спец теги

World1С Подменю пользователя
сообщение 02.11.10, 7:26
Сообщение #2

Оратор
Иконка группы
Квалифицированному 1С программисту
Группа: Местный
Сообщений: 358
Из: г.Луганск, обл.Луганская
Спасибо сказали: 110 раз
Рейтинг: 0

А что в итоге не получается или получается?


Signature
В наше время люди всему знают цену, но понятия не имеют о подлинной ценности.
Оскар Уайлд

Стажёр Подменю пользователя
сообщение 02.11.10, 7:35
Сообщение #3

Общительный
**
Группа: Пользователи
Сообщений: 35
Из: Томск
Спасибо сказали: 0 раз
Рейтинг: 0

в итоге в колонке НаличиеНаЦентральномСкладе не отображается остаток

Batchir Подменю пользователя
сообщение 02.11.10, 7:42
Сообщение #4

Живет на форуме
Иконка группы
Группа: Команда
Сообщений: 3568
Из: Киев
Спасибо сказали: 1443 раз
Рейтинг: 0

ТаблицаОст=ОстаткиТМЦ.Остатки(МоментВремени(),Отбор,"Номенклатура","Количество");

А чему равен МоментВремени() в момент вывода строк? Попробуйте заменить на ТекущаяДата() и посмотреть результат
ТаблицаОст=ОстаткиТМЦ.Остатки(ТекущаяДата(),Отбор,"Номенклатура","Количество");

Batchir Подменю пользователя
сообщение 02.11.10, 7:54
Сообщение #5

Живет на форуме
Иконка группы
Группа: Команда
Сообщений: 3568
Из: Киев
Спасибо сказали: 1443 раз
Рейтинг: 0

И для того что бы в колонке что то показалось нужно туда что то записать. В Вашем случае это (проявление телепатии)
ОформлениеСтроки.Ячейки.НаличиеНаЦентральномСкладе.Значение=ТаблицаОст.Итог("Количество");

но могу ошибаться, т.к. понятия не имею что из себя представляет колонка НаличиеНаЦентральномСкладе

Стажёр Подменю пользователя
сообщение 02.11.10, 7:55
Сообщение #6

Общительный
**
Группа: Пользователи
Сообщений: 35
Из: Томск
Спасибо сказали: 0 раз
Рейтинг: 0

МоментВремени() равен сегодняшней дате. Замени на ТекущаяДата(), ничего не изменилось. (

Batchir Подменю пользователя
сообщение 02.11.10, 8:00
Сообщение #7

Живет на форуме
Иконка группы
Группа: Команда
Сообщений: 3568
Из: Киев
Спасибо сказали: 1443 раз
Рейтинг: 0

Цитата(Стажёр @ 02.11.10, 8:55) *
МоментВремени() равен сегодняшней дате. Замени на ТекущаяДата(), ничего не изменилось. (

Ну тогда ковыряйте регистр напрямую или через отчеты (возможно в нем просто отсутствуют нужные движения или остатки), т.к. у меня выше описанный код на типовой УТ дал результат остатков партий

Стажёр Подменю пользователя
сообщение 02.11.10, 8:03
Сообщение #8

Общительный
**
Группа: Пользователи
Сообщений: 35
Из: Томск
Спасибо сказали: 0 раз
Рейтинг: 0

а может ошибка все же в задании НаличиеНаЦентральномСкладе у меня это реквизит табличной части документа тип число

Batchir Подменю пользователя
сообщение 02.11.10, 8:10
Сообщение #9

Живет на форуме
Иконка группы
Группа: Команда
Сообщений: 3568
Из: Киев
Спасибо сказали: 1443 раз
Рейтинг: 0

Подождите, Вы знаете что такое отладчик, извините если обидел?
1. Посмотрите в отладчике чему равен НаличиеНаЦентральномСкладе при выполнении строки НаличиеНаЦентральномСкладе=ТаблицаОст.Итог("Количество");
2. Если это документ (а я почти уверен что это документ), то добавлять реквизит в документ, который будет при каждом открытии документа менятся - за это двойка.
Для таких случаев размещают просто колонку в табличной части на форме и в неё уже выводят нужные данные, выше описывал как.
ОформлениеСтроки.Ячейки.НаличиеНаЦентральномСкладе.Значение=ТаблицаОст.Итог("Количество");

Повторюсь. Это просто колонка, без привязки к данным

Стажёр Подменю пользователя
сообщение 02.11.10, 8:24
Сообщение #10

Общительный
**
Группа: Пользователи
Сообщений: 35
Из: Томск
Спасибо сказали: 0 раз
Рейтинг: 0

Отладчик выдает при выполнении строки НаличиеНаЦентральномСкладе=ТаблицаОст.Итог("Количество"); значение типа Число

при выполнении строки ОформлениеСтроки.Ячейки.НаличиеНаЦентральномСкладе.Значение=ТаблицаОст.Итог("Количество");
ошибка:
Поле объекта не обнаружено (НаличиеНаЦентральномСкладе)
ОформлениеСтроки.НаличиеНаЦентральномСкладе.Значение=ТаблицаОст.Итог("Количество");

World1С Подменю пользователя
сообщение 02.11.10, 8:34
Сообщение #11

Оратор
Иконка группы
Квалифицированному 1С программисту
Группа: Местный
Сообщений: 358
Из: г.Луганск, обл.Луганская
Спасибо сказали: 110 раз
Рейтинг: 0

Странно ведь вам объяснили как нельзя лучше.

Цитата
а может ошибка все же в задании НаличиеНаЦентральномСкладе у меня это реквизит табличной части документа тип число

вопрос/ответ
Цитата
Для таких случаев размещают просто колонку в табличной части на форме и в неё уже выводят нужные данные, выше описывал как.


В табличной части отыщите свою колонку/реквезит и в свойствах колонки поле "Данные" должно быть пустым или равным имени колонки.
Пример:
// Пример 3. Заполнение колонки табличного поля при отображении таблицы значений
Процедура ПередОткрытием(Отказ, СтандартнаяОбработка)
  Перем Стр;
     ТЗ.Колонки.Добавить("Картинка");
       // Заполнение таблицы значений
       Для Сч = 0 по 10 Цикл
             Стр = ТЗ.Добавить();
                 Если Сч % 2 = 0 Тогда
                    Стр.Картинка = БиблиотекаКартинок.Справка;
                 Иначе
                    Стр.Картинка = БиблиотекаКартинок.Важно;
                 КонецЕсли;
       КонецЦикла;
    ЭлементыФормы.ТабличноеПоле1.Колонки.Колонка1.ДанныеКартинки = "Картинка";
КонецПроцедуры


Signature
В наше время люди всему знают цену, но понятия не имеют о подлинной ценности.
Оскар Уайлд

Batchir Подменю пользователя
сообщение 02.11.10, 8:41
Сообщение #12

Живет на форуме
Иконка группы
Группа: Команда
Сообщений: 3568
Из: Киев
Спасибо сказали: 1443 раз
Рейтинг: 0

1. Удаляем из метаданных реквизит табличной части НаличиеНаЦентральномСкладе
2. На форме на табалице щелкаем правой кнопкой "Добавить колонку" и добавляем новую, имя - НаличиеНаЦентральномСкладе (всё больше ничего не надо)
3. В процедуру при выводе строки вставляем код :
Процедура ТМЦПриВыводеСтроки(Элемент, ОформлениеСтроки, ДанныеСтроки)
    ОстаткиТМЦ=РегистрыНакопления.ПартииТоваровНаСкладах;
    ТекТМЦ=ДанныеСтроки.НаименованиеТМЦ;// ВНИМАНИЕ на эту строку, сравните то что было у Вас.
                      // Возможно здесь проблема, вместо ссылки даете строку
    Отбор=Новый Структура();
    Отбор.Вставить("Номенклатура",ТекТМЦ);
    ТаблицаОст=ОстаткиТМЦ.Остатки(МоментВремени(),Отбор,"Номенклатура","Количество");
    ОформлениеСтроки.Ячейки.НаличиеНаЦентральномСкладе.Значение=ТаблицаОст.Итог("Количество");
КонецПроцедуры

Стажёр Подменю пользователя
сообщение 02.11.10, 8:43
Сообщение #13

Общительный
**
Группа: Пользователи
Сообщений: 35
Из: Томск
Спасибо сказали: 0 раз
Рейтинг: 0

Извините, еще мало опыта и знаний. В свойствах колонки поле "Данные" пустое

Стажёр Подменю пользователя
сообщение 02.11.10, 8:50
Сообщение #14

Общительный
**
Группа: Пользователи
Сообщений: 35
Из: Томск
Спасибо сказали: 0 раз
Рейтинг: 0

Цитата(Batchir @ 02.11.10, 13:41) *
1. Удаляем из метаданных реквизит табличной части НаличиеНаЦентральномСкладе
2. На форме на табалице щелкаем правой кнопкой "Добавить колонку" и добавляем новую, имя - НаличиеНаЦентральномСкладе (всё больше ничего не надо)
3. В процедуру при выводе строки вставляем код :
Процедура ТМЦПриВыводеСтроки(Элемент, ОформлениеСтроки, ДанныеСтроки)
    ОстаткиТМЦ=РегистрыНакопления.ПартииТоваровНаСкладах;
    ТекТМЦ=ДанныеСтроки.НаименованиеТМЦ;// ВНИМАНИЕ на эту строку, сравните то что было у Вас.
                                                                              // Возможно здесь проблема, вместо ссылки даете строку
    Отбор=Новый Структура();
    Отбор.Вставить("Номенклатура",ТекТМЦ);
    ТаблицаОст=ОстаткиТМЦ.Остатки(МоментВремени(),Отбор,"Номенклатура","Количество");
    ОформлениеСтроки.Ячейки.НаличиеНаЦентральномСкладе.Значение=ТаблицаОст.Итог("Количество");
КонецПроцедуры



Спасибо большое, все получилось, вы меня очень выручили)

Не нашли ответа на свой вопрос?
Зарегистрируйтесь и задайте новый вопрос.


Ответить Новая тема
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 

RSS Текстовая версия Сейчас: 16.06.25, 19:59
1С Предприятие 8.3, 1С Предприятие 8.2, 1С Предприятие 8.1, 1С Предприятие 8.0, 1С Предприятие 7.7, Литература 1С, Общие вопросы по администрированию 1С, Методическая поддержка 1С - всё в одном месте: на Украинском 1С форуме!