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

Хранилище

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

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



> Как узнать остатки на основном складе          
Sede Подменю пользователя
сообщение 05.10.15, 11:11
Сообщение #1

Говорящий
***
Группа: Пользователи
Сообщений: 51
Спасибо сказали: 2 раз
Рейтинг: 0

Здравствуйте.
Помогите разобраться. Пытаюсь узнать остатки товаров на основном складе на текущую дату:


 спТовары=СоздатьОбъект("СписокЗначений");
тзТовары.выгрузить(спТовары,,,"Товар");                                         // товары по Номенклатуре
спрСклади=СоздатьОбъект("Справочник.МестаХранения");
спрСклади.найтиПоКоду("1");                                                          // основной склад
ОснСклад=спрСклади.ТекущийЭлемент();

Бухи = СоздатьОбъект("БухгалтерскиеИтоги");
Бухи.ИспользоватьСубконто(видыСубконто.тмц, спТовары);
Бухи.ИспользоватьСубконто(видыСубконто.МестаХранения, ОснСклад);
Бухи.ВыполнитьЗапрос(ТекДата, ТекДата,,,,,,);        

Бухи.ВыбратьСубконто(1);
  Пока Бухи.ПолучитьСубконто(1)=1 Цикл
      Тов=бухи.Субконто(1);
      Строка="";     Остатки=0;
      Если тзТовары.НайтиЗначение(Тов, Строка, "Товар")=1 Тогда
          Остатки=Бухи.СКД(3);
        тзТовары.установитьЗначение(Строка,"НаличиеНаСкладе", Остатки);
    КонецЕсли;    
  КонецЦикла;


результат - везде наличие на складе по нулям. Где-то что-то не то но разобраться не могу.

nysysimara Подменю пользователя
сообщение 05.10.15, 12:28
Сообщение #2

Оратор
Иконка группы
Группа: Местный
Сообщений: 312
Из: Бердянск
Спасибо сказали: 110 раз
Рейтинг: 0

а если так:
спТовары=СоздатьОбъект("СписокЗначений");
тзТовары.выгрузить(спТовары,,,"Товар");                                         // товары по Номенклатуре
спрСклади=СоздатьОбъект("Справочник.МестаХранения");
спрСклади.найтиПоКоду("1");                                                          // основной склад
ОснСклад=спрСклади.ТекущийЭлемент();

Бухи = СоздатьОбъект("БухгалтерскиеИтоги");
Бухи.ИспользоватьСубконто(видыСубконто.тмц, спТовары,2);
Бухи.ИспользоватьСубконто(видыСубконто.МестаХранения, ОснСклад,2);
Бухи.ВыполнитьЗапрос(ТекДата,ТекДата,,,,,,);        

тзТовары.ВыбратьСтроки();
Пока тзТовары.ПолучитьСтроку()=1 Цикл
    Если Бухи.ПолучитьСубконто(1,,тзТовары.Товар) = 1 Тогда
        тзТовары.НаличиеНаСкладе = Бухи.СНД("К") - Бухи.СНК("К");
    КонецЕсли;
КонецЦикла;


Сообщение отредактировал nysysimara - 05.10.15, 12:34


Signature
1С Предприятие 7.7: Бух. учет для Украины (активно дописанная) + самописка (учет производства и ЗП)
1С Предприятие 8.3: Бух.предприятия 3.0 + самописка
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Кроме высшего образования, нужно иметь хотя бы среднее соображение

Sede Подменю пользователя
сообщение 05.10.15, 14:07
Сообщение #3

Говорящий
***
Группа: Пользователи
Сообщений: 51
Спасибо сказали: 2 раз
Рейтинг: 0

результат тот же - 0

mister-x Подменю пользователя
сообщение 05.10.15, 16:53
Сообщение #4

...
Иконка группы
Модератору Про1С (за заслуги в 2011 году)
Группа: Местный
Сообщений: 3477
Из: Тернопіль
Спасибо сказали: 1417 раз
Рейтинг: 0

а якщо розгорнути залишки ще і по 2-му субконто і тоді брати
Бухи.СКД(3)


Сообщение отредактировал mister-x - 05.10.15, 16:54

nysysimara Подменю пользователя
сообщение 06.10.15, 6:42
Сообщение #5

Оратор
Иконка группы
Группа: Местный
Сообщений: 312
Из: Бердянск
Спасибо сказали: 110 раз
Рейтинг: 0

попробуйте пройтись еще и по счетам
тзТовары.ВыбратьСтроки();
Пока тзТовары.ПолучитьСтроку()=1 Цикл
    Если Бухи.ПолучитьСубконто(1,,тзТовары.Товар) = 1 Тогда  
        БИ.ВыбратьСчета();
        Пока БИ.ПолучитьСчет()=1 Цикл
            тзТовары.НаличиеНаСкладе = тзТовары.НаличиеНаСкладе+(Бухи.СНД("К")-Бухи.СНК("К"));  
        КонецЦикла;    
    КонецЕсли;
КонецЦикла;

Sede Подменю пользователя
сообщение 15.10.15, 13:49
Сообщение #6

Говорящий
***
Группа: Пользователи
Сообщений: 51
Спасибо сказали: 2 раз
Рейтинг: 0

Как говорится если долго мучиться что-нибуть получится.
Ошибка была в сравнениях значений таблицы и субконто БИ. (в таблице значение типа ссылка, в БИ возвращалось типа строка)
Решение следующее:

 спТовары=СоздатьОбъект("СписокЗначений");
тзТовары.выгрузить(спТовары,,,"Товар");
спрСклади=СоздатьОбъект("Справочник.МестаХранения");
спрСклади.найтиПоКоду("1");
ОснСклад=спрСклади.ТекущийЭлемент();

Бухи = СоздатьОбъект("БухгалтерскиеИтоги");  
Бухи.ИспользоватьСубконто(видыСубконто.МестаХранения, ОснСклад);
Бухи.ИспользоватьСубконто(видыСубконто.тмц, спТовары);
Бухи.ИспользоватьСубконто(видыСубконто.партии);

Если Бухи.ВыполнитьЗапрос(КонДата, КонДата,"281,282")=0 Тогда
    Возврат;    
КонецЕсли;

Бухи.ВыбратьСубконто(1);
Пока Бухи.ПолучитьСубконто(1)=1 Цикл
    Бухи.ВыбратьСубконто(2);

    Пока Бухи.ПолучитьСубконто(2)=1 Цикл  
        Остатки=0;
        Товар=Бухи.ПредставлениеСубконто(2);
        Остатки=Бухи.СКД(3);
         
        тзЗаказ.ВыбратьСтроки();
         Пока тзТовары.ПолучитьСтроку()=1 Цикл    
          Если Товар=тзТовары.Товар.Наименование Тогда  // достаем "строку" наименования из ссылки на товар из ТЗ
            тзТовары.НаличиеСклад=Остатки;
          КонецЕсли;    
         КонецЦикла;

    КонецЦикла;
КонецЦикла;


Может кому-то подойдет

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


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

 

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