Отправляет email-рассылки с помощью сервиса Sendsay

RFpro.ru: 1С для программиста

  Все выпуски  

RusFAQ.ru: 1С для программиста


РАССЫЛКИ ПОРТАЛА RUSFAQ.RU

/ КОМПЬЮТЕРЫ И ПО / Языки программирования / 1С для программиста

Выпуск № 307
от 26.09.2006, 19:05

Администратор:Калашников О.А.
В рассылке:Подписчиков: 270, Экспертов: 35
В номере:Вопросов: 8, Ответов: 18


Вопрос № 56168: Привет эксперты 1С! =) Начинаю программировать на внутреннем языке 1Сv7.7 Передо мной такая задача, нужно вывести выручку по кассам, по проданным товарам со ставкой НДС 18% и 10% т.е. в условие нужно добавить, если товар имеет ставку 18%,...
Вопрос № 56170: Здравствуйте!!! Вопрос такой: Можно ли в 1с чтоб при вычитании значения типа "дата" получалось значение типа "дата", а то у меня число получается. Например 12.09.06-11.02.04 получается 944 а мне надо чтоб было 01.07.02...
Вопрос № 56188: Здравствуйте эксперты! Вопрос такой: форма списка справочника, рядом на форме таблица значений в которой хочется видеть элементы подчинённого данному справочника. ..
Вопрос № 56194: Здравствуйте эксперты! В 1с 77 сетевая в глобальном модуле не работают одновременно две обработки ожидания. Переменные с интервалом времени запуска разные. Работает всегда только первая. Может кто-то сталкивался с такой проблемой? ...
Вопрос № 56201: При распечатке анализа счета из оборотно -сальдовой ведомости (1с, семерка) для каждого анализа счета требуется отдельный лист бумаги А4. Скажите пожалуйста, как добиться того, чтобы на одном таком листе печаталось, скажем, три анализа счета?...
Вопрос № 56213: Здравствуйте! 1С 7.7 Комплекс Сразу скажу, что никогда не работал в 1С с ОС. Мы купили компьютер, сделали документ Поступление ОС, ввели в эксплуатацию. Далле мы купили ОЗУ(к этому компьютеру),также сделали ПоступлениеОС. Нужно сделать так, чтобы...
Вопрос № 56226: Есть внешний отчет по обработке документов, какие документы обрабатываються для нагладности помещаються в ПолеСоСписком. Теперь задача стоит ипользовать поле со списком не просто для визуализации обрабатываемых документов, а для уточнения(выбора ...
Вопрос № 56234: Здравствйте! В приложении приведена процедура которая делает запрос, а затем выводит в таблицу. Но таблица пустая, шапка и заголовок есть но не более. Смотрел в отладчике - цикл не обрабатывается, сразу Запрос.Группировка("Код")=0. Что не т...

Вопрос № 56.168
Привет эксперты 1С! =)
Начинаю программировать на внутреннем языке 1Сv7.7
Передо мной такая задача, нужно вывести выручку по кассам, по проданным товарам со ставкой НДС 18% и 10%
т.е. в условие нужно добавить, если товар имеет ставку 18%, то следует прибавить его сумму к переменной ПечРеал_Н,
я просто не знаю, как обратиться к товару через ТаблицуЗначений к НДС этого товара и сравнить его, равно ли оно 18 или 10

Приложение:

Отправлен: 21.09.2006, 08:02
Вопрос задал: Терсков Алексей Николаевич (статус: Посетитель)
Всего ответов: 1
Мини-форум вопроса >>> (сообщений: 2)

Отвечает: Ovr1970
Здравствуйте, Терсков Алексей Николаевич!
Вам в запрос нужно добавить реквизит товара, что - то типа
ТипНДС=Документ.ОтчетОПродажах.Товар.ТипНДС;
Группировка ТипНДС;
Тогда в результате запроса попадут отдельные результаты по группам товаров по каждому документу
Ответ отправил: Ovr1970 (статус: Студент)
Ответ отправлен: 21.09.2006, 19:09


Вопрос № 56.170
Здравствуйте!!!
Вопрос такой:
Можно ли в 1с чтоб при вычитании значения типа "дата" получалось значение типа "дата", а то у меня число получается.
Например 12.09.06-11.02.04 получается 944 а мне надо чтоб было 01.07.02
Отправлен: 21.09.2006, 08:20
Вопрос задал: Гребиников Павел Генадьевич (статус: 2-ой класс)
Всего ответов: 2
Мини-форум вопроса >>> (сообщений: 1)

Отвечает: Elric
Здравствуйте, Гребиников Павел Генадьевич!

Нет, так нельзя.
Более того, приведенный Вами пример не имеет НИКАКОГО смысла.

Если Вам нужно отнять от даты несколько месяцев или лет, используйте функцию
ДобавитьМесяц(Дата,КвоМесяцев);
причем КвоМесяцев ставьте отрицательным
Если нужно отнять несколько дней -- просто отнимите это число от даты.

Например, чтобы из 12.09.06 получить 01.07.02, выражение должно выглядеть так:

НоваяДата = ДобавитьМесяц('12.09.06', -50) - 11;
---------
Мирный атом в КАЖДЫЙ дом!
Ответ отправил: Elric (статус: Практикант)
Ответ отправлен: 21.09.2006, 09:43
Оценка за ответ: 4

Отвечает: ATan
Здравствуйте, Гребиников Павел Генадьевич!
В 1С при результат при вычитании значений типа Дата равен количеству дней между ними. Нужный вам результат можно получить скажем следущим образом:
Разница = Дата(Дата("01.12.1999") + (Дата("12.09.2006") - Дата("11.02.2004")));// = 02.07.02
Ответ отправил: ATan (статус: 1-ый класс)
Ответ отправлен: 21.09.2006, 10:02
Оценка за ответ: 3
Комментарий оценки:
а как быть с Разница = Дата(Дата("01.12.1999") + (Дата("01.16.2006") - Дата("11.08.2004")));// = 19.10.02


Вопрос № 56.188
Здравствуйте эксперты!
Вопрос такой:
форма списка справочника, рядом на форме таблица значений в которой хочется видеть элементы подчинённого данному справочника.

Отправлен: 21.09.2006, 10:30
Вопрос задал: Яров Максим Сергеевич (статус: Посетитель)
Всего ответов: 3
Мини-форум вопроса >>> (сообщений: 1)

Отвечает: Шахрайчук Владимир Анатольевич
Здравствуйте, Яров Максим Сергеевич!
Выбранный интерактивно элемент это ТекущийЭлемент()
Для вывода в ТЗ подчиненных элементов сначала очистим ТЗ
ТЗ.УдалитьСтроки()
Потом заполнить ее:
СпрП=СоздатьОбъект("Справочник.ПодчиненныйНамСправочник");
СпрП.ИспользоватьВладельца(ТекущийЭлемент());
СпрП.ВыбратьЭлементы();
Пока СпрП.ПолучитьЭлемент()=1 Цикл
ТЗ.НоваяСтрока();
ТЗ.Подч=СпрП.ТекущийЭлемент();
КонецЦикла

Инициировать эту процедуру можно так: положите на форму текстовое поле, в закладке Дополнительно напишите МояФункция()

А в модуле формы списка напишите
Функция МояФункция()
Заполнение ТЗ
Возврат "";
КонецФункции

Должно работать
Ответ отправил: Шахрайчук Владимир Анатольевич (статус: Студент)
Ответ отправлен: 21.09.2006, 10:54
Оценка за ответ: 5
Комментарий оценки:
Никогда бы не подумал, что эту процедуру можно инициировать через текстовое поле.
СПАСИБО!!!

Отвечает: Vizli
Здравствуйте, Яров Максим Сергеевич!

Можно сделать так:
1. Пусть имя таблицы значений с подчиненными элементами будет ТЗПодч

2. Добавляем на форму списка справочника элемент диалога "Текст" и в его свойствах указываем "Сделать невидимым"

3. В формуле этого элемента диалога указываем имя функции, например: "ПоказатьПодчиненныеЭлементы(ТекущийЭлемент())"

4. После всех процедур и функци в конце модуля опишем структуры таблицы:
//**************************************************
ТЗПодч.НоваяКолонка("Имя_1");
// и т.д. т.е. опишем столько колонок, сколько хотим видеть
ТЗПодч.НоваяКолонка("Имя_N");
//**************************************************

5. в модуле опишем эту функцию:
//**************************************************
Функция ПоказатьПодчиненныеЭлементы(ТекЭлемент)
ТЗПодч.УдалитьСтроки();

СпрПодчиненный=СоздатьОбъект("Справочник.Договоры");
СпрПодчиненный.ИспользоватьВладельца(ТекЭлемент);
СпрПодчиненный.ВыбратьЭлементы();

Пока СпрПодчиненный.ПолучитьЭлемент()=1 Цикл
ТЗДоговора.НоваяСтрока();

ТЗДоговора.Имя_1=СпрДог.Наименование;
// и т.д. заполняем все колонки в строке
ТЗДоговора.Имя_N=СпрДог.Наименование;

КонецЦикла;
КонецФункции
//**************************************************

Удачи!
Ответ отправил: Vizli (статус: 2-ой класс)
Ответ отправлен: 21.09.2006, 11:44

Отвечает: Гребиников Павел Генадьевич
Здравствуйте, Яров Максим Сергеевич!
Используйте метод "ИспользоватьВладельца"

Приложение:

---------
Плох тот юзер, который не мечтает стать админом...

Ответ отправил: Гребиников Павел Генадьевич (статус: 2-ой класс)
Ответ отправлен: 21.09.2006, 13:50
Оценка за ответ: 4


Вопрос № 56.194
Здравствуйте эксперты! В 1с 77 сетевая в глобальном модуле не работают одновременно две обработки ожидания. Переменные с интервалом времени запуска разные. Работает всегда только первая.
Может кто-то сталкивался с такой проблемой?

Приложение:

Отправлен: 21.09.2006, 11:11
Вопрос задал: Гайдашевский Александр Иванович (статус: Посетитель)
Всего ответов: 4
Мини-форум вопроса >>> (сообщений: 1)

Отвечает: Inuki
Здравствуйте, Гайдашевский Александр Иванович!

Две и не будут работать.
Ответ отправил: Inuki (статус: 1-ый класс)
Ответ отправлен: 21.09.2006, 11:16
Оценка за ответ: 2

Отвечает: Manserg
Здравствуйте, Гайдашевский Александр Иванович!
Да, можно использовать только одну
Ответ отправил: Manserg (статус: 4-ый класс)
Ответ отправлен: 21.09.2006, 11:28
Оценка за ответ: 3
Комментарий оценки:
Я понял что можно использовать одну. Но какой выход с положения если мне нужно их три???

Отвечает: ATan
Здравствуйте, Гайдашевский Александр Иванович!
Выбери какой-нибудь наименьший интервал, который был бы кратен интервалам нужным тебе и веди счетчик количества срабатываний процедуры, скажем если тебе надо 900 секунд то при срабатывании обработки ожидания, которую ты инициализировал с двадцатисекундным интервалом, 45 раз ты можешь выполнить задуманное. Удачи. Большего извини 1С не позволяет.

Приложение:

Ответ отправил: ATan (статус: 1-ый класс)
Ответ отправлен: 21.09.2006, 11:51
Оценка за ответ: 5

Отвечает: Vizli
Здравствуйте, Гайдашевский Александр Иванович!

Выход может быть такой:
1. Нужно выбрать НаименьшийИнтервалОпроса=20, (в вашем случае 20 сек.) а другие интервалы выбрать кратными ему, например 900, и т.д.
причем за 900 сек первая процедура должна выполниться 45 раз (20*45=900)

2. обьявим переменную модуля, например:
//**********************************
Перем СчетчикВыполнения;
//**********************************

в конце модуля инициализируем ее:
//**********************************
СчетчикВыполнения=0;
//**********************************

3. перепишем процедуру ПриНачалеРаботыСистемы()
//****************************************
Процедура ПриНачалеРаботыСистемы()
ОбработкаОжидания("ОбработкаВсехСобытий", НаименьшийИнтервалОпроса);
КонецПроцедуры
//****************************************

4. перепишем процедуру ОбработкаВсехСобытий()
//**************************************
Процедура ОбработкаВсехСобытий()
// начало работы, ОбработкаОжидания вызвана первый раз
Если СчетчикВыполнения=0 Тогда
// укажем, что было выполнено действие
СчетчикВыполнения=1;
// выполним первую процедуру
ОпросСостоянияСистемы();
// вторая и последующие процедуры тоже могут быть выполнены
Автозагрузка();
ИначеЕсли (СчетчикВыполнения < 45) И (СчетчикВыполнения > 0) Тогда
СчетчикВыполнения=СчетчикВыполнения+1;
// выполним первую процедуру
ОпросСостоянияСистемы();
ИначеЕсли СчетчикВыполнения = 45 Тогда
// сбросим счетчик
СчетчикВыполнения=1;
// выполним первую процедуру
ОпросСостоянияСистемы();
// вторая и последующие процедуры тоже могут быть выполнены
Автозагрузка();
КонецЕсли;
КонецПроцедуры
//**************************************

Ответ отправил: Vizli (статус: 2-ой класс)
Ответ отправлен: 21.09.2006, 12:18
Оценка за ответ: 5


Вопрос № 56.201
При распечатке анализа счета из оборотно -сальдовой ведомости (1с, семерка) для каждого анализа счета требуется отдельный лист бумаги А4. Скажите пожалуйста, как добиться того, чтобы на одном таком листе печаталось, скажем, три анализа счета?
Отправлен: 21.09.2006, 11:41
Вопрос задал: Aleksej (статус: Посетитель)
Всего ответов: 4
Мини-форум вопроса >>> (сообщений: 0)

Отвечает: Шальков Павел Владимирович
Здравствуйте, Aleksej!
Стандартными средствами никак. Придется писать свой отчетик.
Ответ отправил: Шальков Павел Владимирович (статус: 7-ой класс)
Ответ отправлен: 21.09.2006, 11:50

Отвечает: Шахрайчук Владимир Анатольевич
Здравствуйте, Aleksej!
Сохраните в Эксель, и скомпонуйте как угодно.
Кроме того, АнализСчета это всего навсего отчет, написанный в конфигурации. Можете в нем поискать комманду НоваяСтраница() и удалить ее. Но боюсь, результат Вам не понравится.
Ответ отправил: Шахрайчук Владимир Анатольевич (статус: Студент)
Ответ отправлен: 21.09.2006, 12:47

Отвечает: vcv
Здравствуйте, Aleksej!
Сделайте отчет "Анализ счета по субконто"
Ответ отправил: vcv (статус: 1-ый класс)
Ответ отправлен: 21.09.2006, 13:56

Отвечает: Karanskiy Arkadiy
Здравствуйте, Aleksej!
Если я правильно понял вопрос, то вам скорей всего необходим Маштаб. Меню Файл - Параментры печати - и там выбрать в процентах маштаб.
Если надо программно следить за расспечатыванием, тогда посмотрите описание методов ПараметрыСтраницы(); и Опции();
Успехов...
Ответ отправил: Karanskiy Arkadiy (статус: 3-ий класс)
Ответ отправлен: 21.09.2006, 20:54


Вопрос № 56.213
Здравствуйте! 1С 7.7 Комплекс
Сразу скажу, что никогда не работал в 1С с ОС. Мы купили компьютер, сделали документ Поступление ОС, ввели в эксплуатацию. Далле мы купили ОЗУ(к этому компьютеру),также сделали ПоступлениеОС. Нужно сделать так, чтобы память была в составе ОС "Компьютер" и амортизация начислялась как на одно ОС. Может я и не правильно выразился, но думаю суть будет понятна. Как вот это все сделать?
Как вообще ведется учет ОС в 1С? Может есть какая-нибудь книжка, статья.... подскажите. Спасибо.
Отправлен: 21.09.2006, 13:15
Вопрос задал: Munster (статус: 3-ий класс)
Всего ответов: 1
Мини-форум вопроса >>> (сообщений: 0)

Отвечает: vcv
Здравствуйте, Munster!
Цитирую Консультант:
"14. Стоимость основных средств, в которой они приняты к бухгалтерскому учету, не подлежит изменению, кроме случаев, установленных законодательством Российской Федерации и настоящим Положением.
Изменение первоначальной стоимости основных средств, в которой они приняты к бухгалтерскому учету, допускается в случаях достройки, дооборудования, реконструкции, модернизации, частичной ликвидации и переоценки объектов основных средств.
(в ред. Приказа Минфина РФ от 18.05.2002 N 45н)"
Оно вам это надо? Модернизацию оформлять? Если надо, списывайте память на счет 08.3, потом делайте документ "Модернизация ОС".
Ответ отправил: vcv (статус: 1-ый класс)
Ответ отправлен: 21.09.2006, 13:54
Оценка за ответ: 5
Комментарий оценки:
Спасибо!


Вопрос № 56.226
Есть внешний отчет по обработке документов, какие документы обрабатываються для нагладности помещаються в ПолеСоСписком.
Теперь задача стоит ипользовать поле со списком не просто для визуализации обрабатываемых документов, а для уточнения(выбора определенных) обрабатываемых документов. Там есть поле Пометка, но как быть потом когда нужно создать обращение именно к тому документу который помечен в поле со списком для дальнейшей обработки данного документа....
Отправлен: 21.09.2006, 15:00
Вопрос задал: Romhik (статус: Посетитель)
Всего ответов: 2
Мини-форум вопроса >>> (сообщений: 6)

Отвечает: Gl0betrotter
Здравствуйте, Romhik!

// Вариант 1:
// С перебором всех документов, определением наличия вида документа в общем списке и определением стоит ли пометка для документа данного вида

Перем НомерПозиции;

Док=СоздатьОбъект("Документ");
Док.ВыбратьДокументы(Дата_Начала_Периода,Дата_Окончания_Периода);
Пока Док.ПолучитьДокумент()>0 Цикл
НомерПозиции= СписокДокументовДляПометки.НайтиЗначение(Док.Вид());
Если НомерПозиции=0 Тогда
Продолжить;
Иначе
Если СписокДокументовДляПометки.Пометка(НомерПозиции)=0 Тогда
Продолжить;
КонецЕсли;
КонецЕсли;
...
Здесь Ваши действия с документом, успешно прошедшим проверку
...
КонецЦикла;
//Вариант 2:
// С перебором общего списка, формирование списка из помеченных к обработке, перебором всех документов и сверкой вида документа с новым списком

Перем НомерПозиции, СписокОбрабатываемыхДокументов;

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

Док=СоздатьОбъект("Документ");
Док.ВыбратьДокументы(Дата_Начала_Периода,Дата_Окончания_Периода);
Пока Док.ПолучитьДокумент()>0 Цикл
НомерПозиции= СписокОбрабатываемыхДокументов.НайтиЗначение(Док.Вид());
Если НомерПозиции=0 Тогда
Продолжить;
КонецЕсли;
...
Здесь Ваши действия
...
КонецЦикла;

Удачи!
Ответ отправил: Gl0betrotter (статус: 6-ой класс)
Ответ отправлен: 21.09.2006, 16:06
Оценка за ответ: 4
Комментарий оценки:
Спасибо за столь быстрый и развернутый ответ. Меня больше интересует скорее всего второй случай, сперва формируется список значений из документов при нажатие на "1" кнопку, потом из этого списка помечаються(выбираються) определенные документы, а потом при нажатие на "2" кнопку происходит обработка не всего списка документов из списка значений, а только которые пометились в ручную.
У меня не получаеться именно "2" часть этой обработки, перемолость весь список я могу, а вот чтобы только которые только что пометил, не получаеться, в лучшем случае обрабатываеться только первый Элемент списка значений.....

Отвечает: Elric
Здравствуйте, Romhik!

Есть такой метод списка:

Пометка()

Может использоваться для установки пометки, либо для считывания наличия пометки.

Например, команда:

Сообщить(Сп.Пометка(2));

сообщит 1 если пометка для второго элемента (документа) списка установлена, и 0 если не установлена.
---------
Мирный атом в КАЖДЫЙ дом!
Ответ отправил: Elric (статус: Практикант)
Ответ отправлен: 22.09.2006, 02:05
Оценка за ответ: 3
Комментарий оценки:
Ту уж конечно извини за превзятость, но это твердая тройка(ЗАЧЕТ). Но все равно спасибо за активность. Надо и с твоим ответом по экспериментировать, для расширения знаний в работе с ПолеСоСписком. Учись, Учись и ещё раз Учись. Спасибо тебе Elric.


Вопрос № 56.234
Здравствйте! В приложении приведена процедура которая делает запрос, а затем выводит в таблицу. Но таблица пустая, шапка и заголовок есть но не более. Смотрел в отладчике - цикл не обрабатывается, сразу Запрос.Группировка("Код")=0. Что не так?

Приложение:

Отправлен: 21.09.2006, 16:27
Вопрос задал: Munster (статус: 3-ий класс)
Всего ответов: 1
Мини-форум вопроса >>> (сообщений: 0)

Отвечает: Warior
Здравствуйте, Munster!
Насколько я понял необходимо вывести в таблицу остатки для этого надо использовать функцию запроса "КонОст" (см. приложение), если нужны и обороты за период с/без начальным остатком нужно еще добавить функции НачОст,Приход и Расход.

Приложение:

Ответ отправил: Warior (статус: 4-ый класс)
Ответ отправлен: 21.09.2006, 16:44
Оценка за ответ: 5
Комментарий оценки:
Спасибо. Сработало.


Отправить вопрос экспертам этой рассылки

Приложение (если необходимо):

* Код программы, выдержки из закона и т.п. дополнение к вопросу.
Эта информация будет отображена в аналогичном окне как есть.

Обратите внимание!
Вопрос будет отправлен всем экспертам данной рассылки!

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


Форма НЕ работает в почтовых программах The BAT! и MS Outlook (кроме версии 2003+)!
Чтобы отправить вопрос, откройте это письмо в браузере или зайдите на сайт RusFAQ.ru.


© 2001-2006, Портал RusFAQ.ru, Россия, Москва.
Идея, дизайн, программирование: Калашников О.А.
Email: adm@rusfaq.ru, Тел.: +7 (926) 535-23-31
Авторские права | Реклама на портале
Версия системы: 4.36 от 06.09.2006
Яндекс Rambler's Top100

В избранное